S1 Python 基礎


定義規范

聲明變量

name = "Alex Li"

變量定義規則

  1. 變量名只能是 字母、數字或下划線的任意組合
  2. 變量名的第一個字符不能是數字
  3. 以下關鍵字不能聲明為變量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

定義方式

駝峰體

AgeOfOldboy = 56 
NumberOfStudents = 80

下划線

age_of_oldboy = 56 
number_of_students = 80

你覺得哪種更清晰,哪種就是官方推薦的,我想你肯定會先第2種,第一種AgeOfOldboy咋一看以為是AngelaBaby

變量的修改

。。。。

定義變量不好的方式舉例

  • 變量名為中文、拼音
  • 變量名過長
  • 變量名詞不達意

常量

常量即指不變的量,如pai 3.141592653..., 或在程序運行過程中不會改變的量

在Python中沒有一個專門的語法代表常量,程序員約定俗成用變量名全部大寫代表常量

AGE_OF_OLDBOY = 56

在c語言中有專門的常量定義語法,const int count = 60;一旦定義為常量,更改即會報錯

 


基本數據類型

什么是數據類型?

對常用的各種數據類型進行了明確的划分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。Python中常用的數據類型有多種,今天我們暫只講3種, 數字、字符串、布爾類型

數字

int(整型)

在32位機器上,整數的位數為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647

在64位系統上,整數的位數為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(長整型)

跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器內存有限,我們使用的長整數數值不可能無限大。

注意,自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據后面不加字母L也不會導致嚴重后果了。

注意:在Python3里不再有long類型了,全都是int

 

>>> a= 2**64
>>> type(a)  #type()是查看數據類型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>

 

  

除了int和long之外, 其實還有float浮點型, 復數型

字符串

在Python中,加了引號的字符都被認為是字符串!

那單引號、雙引號、多引號有什么區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種情況 你需要考慮單雙的配合

msg = "My name is Alex , I'm 22 years old!"
多引號什么作用呢?作用就是多行字符串必須用多引號

msg = '''
今天我想寫首小詩,
歌頌我的同桌,
你看他那烏黑的短發,
好像一只炸毛雞。
'''

print(msg)
View Code

 

字符串拼接

數字可以進行加減乘除等運算,字符串呢?讓我大聲告訴你,也能?what ?是的,但只能進行"相加""相乘"運算。

>>> name
'Alex Li'
>>> age
'22'
>>> 
>>> name + age  #相加其實就是簡單拼接
'Alex Li22'
>>> 
>>> name * 10 #相乘其實就是復制自己多少次,再拼接在一起
'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
注意,字符串的拼接只能是雙方都是字符串,不能跟數字或其它類型拼接

>>> type(name),type(age2)
(<type 'str'>, <type 'int'>)
>>> 
>>> name
'Alex Li'
>>> age2
22
>>> name + age2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects #錯誤提示數字 和 字符 不能拼接
View Code

 

布爾型

布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷

但其實你們並不明白對么? let me explain, 我現在有2個值 , a=3, b=5 , 我說a>b你說成立么? 我們當然知道不成立,但問題是計算機怎么去描述這成不成立呢?或者說a< b是成立,計算機怎么描述這是成立呢?

沒錯,答案就是,用布爾類型

>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True
計算機為什么要描述這種條件呢?因為接下來就可以根據條件結果來干不同的事情啦呀!比如

if a > b 
   print(a is bigger than b )

else 
   print(a is smaller than b )
上面是偽代碼,但是不是意味着, 計算機就可以根據判斷結果不同,來執行不同的動作啦?
View Code 

 

格式化輸出

現有一練習需求,問用戶的姓名、年齡、工作、愛好 ,然后打印成以下格式

------------ info of Alex Li -----------
Name  : Alex Li
Age   : 22
job   : Teacher
Hobbie: girl
------------- end -----------------
你怎么實現呢?你會發現,用字符拼接的方式還難實現這種格式的輸出,所以一起來學一下新姿勢

只需要把要打印的格式先准備好, 由於里面的 一些信息是需要用戶輸入的,你沒辦法預設知道,因此可以先放置個占位符,再把字符串里的占位符與外部的變量做個映射關系就好啦

name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")

info = '''
------------ info of %s ----------- #這里的每個%s就是一個占位符,本行的代表 后面拓號里的 name 
Name  : %s  #代表 name 
Age   : %s  #代表 age  
job   : %s  #代表 job 
Hobbie: %s  #代表 hobbie 
------------- end -----------------
''' %(name,name,age,job,hobbie)  # 這行的 % 號就是 把前面的字符串 與拓號 后面的 變量 關聯起來 

print(info)
%s就是代表字符串占位符,除此之外,還有%d,是數字占位符, 如果把上面的age后面的換成%d,就代表你必須只能輸入數字啦

age     : %d
我們運行一下,但是發現出錯了。說%d需要一個數字,而不是str, what? 我們明明輸入的是數字呀,22,22呀。

不用擔心 ,不要相信你的眼睛我,們調試一下,看看輸入的到底是不是數字呢?怎么看呢?查看數據類型的方法是什么來着?type()

name = input("Name:")
age = input("Age:")
print(type(age))
執行輸出是

Name:Alex
Age:22
<class 'str'> #怎么會是str
Job:IT
....
讓我大聲告訴你,input接收的所有輸入默認都是字符串格式!

要想程序不出錯,那怎么辦呢?簡單,你可以把str轉成int

age = int(  input("Age:")  )
print(type(age))
肯定沒問題了。相反,能不能把數字轉成字符串呢?必然可以,str( yourStr )
View Code

 %s ,%d 占位符

input 接受輸入的都是字符串str

 

 

基本運算符

運算符

計算機可以進行的運算有很多種,可不只加減乘除這么簡單,運算按種類可分為算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天我們暫只學習算數運算、比較運算、邏輯運算、賦值運算

算數運算

以下假設變量:a=10,b=20

比較運算

以下假設變量:a=10,b=20

賦值運算

以下假設變量:a=10,b=20

邏輯運算

 

練習答案

1.簡述編譯型與解釋型語言的區別,且分別列出你知道的哪些語言屬於編譯型,哪些屬於解釋型.

 答:
   編譯型語言:
     使用專門的編譯器,針對特定的平台,將高級語言源代碼一次性的編譯成可被該平台硬件執行的機器碼,並包裝成該平台所能識別的可執行性程序的格式。
   特點:
     在編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的文件.
   執行方式:
     源代碼 ———> 編譯(一次編譯) ———>目標代碼———>執行(多次執行)———>輸出

  解釋型語言:
     使用專門的解釋器對源程序逐行解釋成特定平台的機器碼並立即執行。
  特點:
     解釋型語言不需要事先編譯,其直接將源代碼解釋成機器碼並立即執行,所以只要某一平台提供了相應的解釋器即可運行該程序。
  執行方式:
    源代碼 ———> 解釋器(每次執行都需要解釋)———>輸出    

  編譯型: C c++, c#
  解釋型: python PHP ruby, java
執行 Python 腳本的兩種方式是什么

  答:
  1、./run.py.shell直接調用python腳本  

 2、python run.py 調用python 解釋器來調用python腳本
Pyhton 單行注釋和多行注釋分別用什么?

  答:
  1, 單行注釋使用 #
  2, 多行注釋使用 “”“”“”  ‘’‘’‘’
布爾值分別有什么?

  答:
 布爾值分別有:True 和False
  布爾值為False的有:[] () {} 0 False ""  等
聲明變量注意事項有那些?

  答案:
     模塊名,包名 :小寫字母, 單詞之間用戶_分割。
     類名:首字母大寫。
     全局變量: 大寫字母, 單詞之間用戶_分割。
     普通變量: 小寫字母, 單詞之間用戶_分割。
     函數: 小寫字母, 單詞之間用戶_分割。
     實例變量: 以_開頭,其他和普通變量一樣 。
     私有實例變量(外部訪問會報錯): 以__開頭(2個下划線),其他和普通變量一樣 。
     專有變量: __開頭__結尾,一般為python的自有變量(不要以這種變量命名)。
如何查看變量在內存中的地址?

 id
寫代碼

實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗!
實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重復輸入三次
實現用戶輸入用戶名和密碼,當用戶名為 seven 或 alex 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重復輸入三次

username = ['seven','Alex']
password = '123'
count = 0
while count < 3:
 username = input('用戶名:')
 password = input('密碼:')
 if username in username and password == password:
     print('登陸成功!')
     break
 else:
     print('登陸失敗!')
 count += 1
寫代碼

a. 使用while循環實現輸出2-3+4-5+6...+100 的和

```
答:
i = 2
count = 0
while i <= 100:
    if i % 2 == 0:
        count += i
    else:
        count -= i
    i += 1
print(count)
```  
b. 使用 while 循環實現輸出 1,2,3,4,5, 7,8,9, 11,12

```
答:
n1 = True
n2 = 1
while n1:
    if n2 == 12:
        print(n2)

        break

    if n2 == 6 or n2 == 10:
        n2 += 1

        continue

    print(n2)

    n2 += 1

```  
c. 使用while 循環輸出100-50,從大到小,如100,99,98...,到50時再從0循環輸出到50,然后結束

```
count =100
while count > 50:
    print(count)
    count -=1
    if count==50:
        count=1
        while count<=50:
            print(count)
            count+=1
        break
```    
d. 使用 while 循環實現輸出 1-100 內的所有奇數

```
count =0
while count <=100:
    if count %2!=0:
        print(count)
    count +=1
```  
e. 使用 while 循環實現輸出 1-100 內的所有偶數

```
count =0
while count <=100:
    if count %2==0:
        print(count)
    count +=1
```  
現有如下兩個變量,請簡述 n1 和 n2 是什么關系?

 n1 = 123456
 n2 = n1
制作趣味模板程序(編程題)
需求:等待用戶輸入名字、地點、愛好,根據用戶的名字和愛好進行任意顯示 如:敬愛可愛的xxx,最喜歡在xxx地方干xxx

 答案:
     name = input("請輸入姓名:")
     address = input("請輸入地點:")
     hobby = input("請輸入愛好:")
     print("敬愛可愛的 %s, 最喜歡在%s地方干%s" % (name, address, hobby))
輸入一年份,判斷該年份是否是閏年並輸出結果。(編程題)
注:凡符合下面兩個條件之一的年份是閏年。 (1) 能被4整除但不能被100整除。 (2) 能被400整除。

 答案:
 def get_year():
     year = int(input("請輸入年份:"))
     if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
         print("%s 年是閏年" % year)
     else:
         print("%s 年不是閏年" % year)

 get_year()
假設一年期定期利率為3.25%,計算一下需要過多少年,一萬元的一年定期存款連本帶息能翻番?(編程題)

     money = 10000
     rate = 0.0325
     years = 0
     while money <= 20000:
         years += 1
         money  = money*(1+rate)
     print(str(years))
一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
    count = 0
    height = 100
    meter = 0

    while count < 10:

        meter +=  height #下落
        height /= 2
        meter += height  #反彈
        count +=1
        print(meter,height)
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM