官术网_书友最值得收藏!

3.1 變量

在Python中,變量嚴格意義上應該稱為“名字”,也可以理解為標簽。例如:

python="學會Python還可以飛"

本行代碼中的python就是一個變量。在大多數編程語言中,都把這一過程稱為“把值存儲在變量中”,即把字符串序列“學會Python還可以飛”存儲在計算機內存的某個位置。你不需要準確地知道它們到底在哪里,只要告訴Python這個字符串序列的名字是python,就可以通過這個名字來引用這個字符串序列了。例如,引用python變量,將其打印輸出,代碼如下:

print(python)

3.1.1 變量的命名和賦值

在Python中,不需要先聲明變量名及其類型,直接賦值,即可創建各種類型的變量。但是變量的命名并不是任意的,應遵循以下幾條規則:

 變量名必須是一個有效的標識符,如height、m_name、h1等。

 變量名不能使用Python中的保留字。例如,不能是int、print等。

 慎用小寫字母l和大寫字母O(以防和數字1和0混淆)。

 應選擇有意義的單詞作為變量名,如number、weight等。

為變量賦值,可以通過賦值運算符號“=”來實現。語法格式為:

變量名 = value

例如,創建一個變量,為其賦值521,則創建的變量就是整型變量:

number = 521                    #創建變量number并賦值521,該變量為數值型

如果為變量賦值一個字符串,則創建的變量就是字符串類型。例如:

martial = "乾坤大挪移"           #字符串類型的變量

另外,Python是一種動態類型的語言,也就是說,變量的類型可以隨時變化。例如,在IDLE中,創建變量martial,并賦值為字符串“乾坤大挪移”,然后輸出該變量的類型,可以看到該變量為字符串類型,再將變量賦值為數值521,并輸出該變量的類型,可以看到該變量為整型。執行過程如下:

說明

在Python語言中,使用內置函數type()可以返回變量類型。

在Python中,允許多個變量指向同一個值。例如,將兩個變量都賦值為數字2048,再分別應用內置函數id()獲取變量的內存地址,將得到相同的結果。執行過程如下:

說明

在Python語言中,使用內置函數id()可以返回變量所在的內存地址。

3.1.2 變量的基本類型

變量的數據類型分為很多種,下面主要介紹數值型、字符串型、布爾型3種基本數據類型。例如,年齡、身高等信息可以使用數值型變量存儲;名字、性別等信息可以使用字符型變量存儲;婚否等信息可以使用布爾型變量存儲,如圖3.1所示。

1.數值類型

數值類型主要包含整數、浮點數和復數。接下來一一介紹。

1)整數

整數用來表示整型數值,即沒有小數部分的數值。Python中,整數包括正整數、負整數和0,其位數是任意的(當超過計算機自身的計算功能時,會自動轉用高精度進行計算)。例如,1314、3456789532900653、?2020、0等都是整數。

圖3.1 數據類型示例

2)浮點數

浮點數由整數部分和小數部分組成,主要用于處理包括小數的數,如1.414、0.5、?1.732、3.1415926535897932384626等。浮點數也可以使用科學計數法表示,如3.7e2、?3.14e5和6.16e?2等。

注意

在使用浮點數進行計算時,可能會出現小數位數不確定的情況。例如,計算0.1+0.1時,會得到0.2;而計算0.1+0.2時,將得到0.30000000000000004(而不是0.3)。執行過程如下:

    >>> 0.1+0.1
    0.2
    >>> 0.1+0.2
    0.30000000000000004

這種問題幾乎存在于所有語言中,原因是計算機精度存在誤差,因此忽略多余的小數位即可。

3)復數

Python中的復數與數學中的復數含義完全一致,表現形式略有不同。兩者都由實部和虛部組成,但數學中使用i表示虛部,Python中用j或J表示虛部。當表示一個復數時,可以將其實部和虛部相加,例如,一個復數的實部為5.21,虛部為13.14j,則這個復數為5.21+13.14j。

2.字符串類型

字符串就是連續的字符序列,是計算機所能表示的一切字符的集合。在Python中,字符串屬于不可變序列,通常使用單引號(' ')、雙引號(" ")或三引號(''' '''和""" """)括起來。這幾種引號形式在語義上沒有差別,只是在形式上有些差別。其中,單引號和雙引號中的字符序列必須在同一行上,而三引號內的字符序列可以分布在連續多行中。例如:

3.布爾類型

布爾類型主要用來表示真值或假值。在Python中,標識符True和False被解釋為布爾值。另外,Python中的布爾值可以轉換為數值,True表示1,False表示0。

說明

Python中,布爾類型的值可以進行數值運算,例如“False + 1”的結果為1。但是不建議對布爾類型的值進行數值運算。

在Python中,所有對象都可以進行真值測試。其中,只有下面列出的幾種情況得到的值為假,其他對象在if或者while語句中都表現為真。

 False或None。

 數值中的零,包括0、0.0和虛數0。

 空序列,包括空字符串、空元組、空列表、空字典。

 自定義對象的實例,該對象的__bool__方法返回False或者__len__方法返回0。

3.1.3 變量的輸入與輸出

變量的輸入與輸出是計算機最基本的操作。基本的輸入是指從鍵盤上輸入數據的操作,用input()函數輸入數據。基本的輸出是指在屏幕上顯示輸出結果的操作,用print()函數輸出。

1.用input()函數輸入

使用內置函數input()可以接收用戶的鍵盤輸入。input()函數的基本語法格式如下:

variable = input("提示文字")

其中,variable為保存輸入結果的變量,雙引號內的文字用于提示要輸入的內容。

例如,想要接收用戶輸入的內容,并保存到變量tip中,可以使用下面的代碼:

tip =input("請輸入文字:")

在Python中,無論輸入的是數字還是字符都將被作為字符串讀取。如果想要接收數值,需要把接收到的字符串進行類型轉換。例如,想要接收整型的數字并保存到變量age中,可以使用下面的代碼:

age =int(input("請輸入數字:"))         #接收輸入整型的數字

說明

input()函數接收內容時,數值內容可直接輸入,且接收到的內容也是數值類型;如果要輸入字符串類型的內容,需要將對應的字符串使用引號括起來,否則會報錯。

2.用print()函數輸出

默認情況下,使用內置的print()函數可以將結果輸出到IDLE或者標準控制臺上。其基本語法格式如下:

print(輸出內容)

其中,輸出內容可以是數字和字符串(字符串需要使用引號括起來),此類內容將直接輸出;也可以是包含運算符的表達式,此類內容將計算結果輸出。例如:

多學兩招

默認情況下,一條print()語句輸出后會自動換行。如果想要一次輸出多個內容且不換行,需要將輸出的內容用英文半角的逗號分隔。例如,下面的代碼將在同一行中輸出變量a和b的值:

     print(a,b)                    #輸出變量a和b,結果為10 6

【實例3.1】 輸出你的年齡。(實例位置:資源包\Code\03\01)

用input()函數輸入你的年齡,用print()函數輸出數據。具體代碼如下:

運行結果如圖3.2所示。

【實例3.2】 用print()函數輸出字符畫。(實例位置:資源包\Code\03\02)

用print()函數輸出一把手槍的字符畫,具體代碼如下:

說明

代碼中的字符是使用搜狗輸入法中的特殊符號編寫的。

運行結果如圖3.3所示。

圖3.2 數據輸入和輸出

圖3.3 輸出字符畫

3.1.4 變量的計算

變量的計算離不開運算符和表達式。運算符是一些特殊的符號,可用于數學計算、比較大小和邏輯運算等。Python中的運算符主要包括算術運算符、賦值運算符、比較(關系)運算符、邏輯運算符和位運算符。使用運算符將不同類型的數據按照一定規則連接起來的式子,稱為表達式。例如,使用算術運算符連接起來的式子稱為算術表達式,使用邏輯運算符連接起來的式子稱為邏輯表達式。下面就來介紹Python中常用的5類運算符。

1.算術運算符

算術運算符主要用于處理四則運算,在數值的處理中應用得最多。常用的算術運算符如表3.1所示。

表3.1 常用的算術運算符

【實例3.3】 計算a,b的各種表達式。(實例位置:資源包\Code\03\03)

具體代碼如下:

運行結果如圖3.4所示。

圖3.4 算術表達式結果

多學兩招

在Python中,“+”運算符還具有拼接功能,可以將兩個字符串進行拼接,例如:

也可以將字符串與數值進行拼接,例如:

2.賦值運算符

賦值運算符主要用來為變量賦值。使用基本賦值運算符“=”,可將“=”右邊的變量值賦給左邊的變量。也可以先進行某些運算,然后再賦值給左邊的變量,這樣的賦值運算符稱為復合賦值運算符。Python中常用的賦值運算符如表3.2所示。

表3.2 常用的賦值運算符

3.比較(關系)運算符

比較運算符又稱為關系運算符,用于對變量或表達式的結果進行比較。如果比較結果為真,則返回True;如果為假,則返回False。比較運算符通常用在條件分支結構及循環結構中,作為判斷的依據。

Python中的常用比較運算符如表3.3所示。

表3.3 常用的比較運算符

注意

初學者很容易混淆賦值運算符“=”和比較運算符“==”。一定要多看幾遍示例,徹底弄明白它們之間的區別。

多學兩招

在Python中,當需要判斷一個變量是否介于兩個值之間時,可以采用“值1 <變量<值2”的形式,例如“0 <a<100”。

【實例3.4】 比較化學、物理、數學、生物的成績。(實例位置:資源包\Code\03\04)

具體代碼如下:

運行結果如圖3.5所示。

4.邏輯運算符

邏輯運算符可對真和假兩種布爾值進行運算,運算后的結果仍是一個布爾值。邏輯運算符主要包括and(邏輯與)、or(邏輯或)和not(邏輯非)。表3.4和表3.5列出了邏輯運算符的用法。

圖3.5 比較表達式結果

表3.4 邏輯運算符

使用邏輯運算符進行邏輯運算時,其運算結果如表3.5所示。

表3.5 邏輯運算的結果

【實例3.5】 參加手機店的打折活動。(實例位置:資源包\Code\03\05)

某手機店在每周二上午10~11點和每周五下午14~15點,對華為系列手機進行折扣讓利活動。想參加折扣活動的顧客就要在時間上滿足:周二10:00 a.m.~11:00 a.m.或者周五2:00 p.m.~3:00 p.m.。

通過邏輯運算符模擬可否參加手機店的打折活動,具體代碼如下:

代碼解析:

(1)第2行代碼:input()函數用于接收用戶輸入的字符序列。

(2)第3行代碼:由于input()函數返回的結果為字符串類型,所以需要進行類型轉換,將其轉換為整型。

(3)第5~8行代碼使用if…else條件判斷語句,該語句主要用來判斷程序是否滿足某種條件。該語句將在第3.2節進行詳細講解,這里只需要了解即可。第5行代碼中對條件進行判斷時,使用了邏輯運算符and、or和比較運算符“==”“>=”“<=”。

按F5鍵運行實例,首先輸入“星期五”,然后輸入時間19,將顯示如圖3.6所示的結果;再次運行實例,輸入“星期二”,時間為10,將顯示如圖3.7所示的結果。

圖3.6 不符合條件的運行效果

圖3.7 符合條件的運行效果

說明

本實例未對錯誤輸入信息進行校驗,所以為保證程序的正確性,請輸入合法的星期和時間。有興趣的讀者可以自行添加校驗功能。

5.位運算符

使用位運算符,可直接對數字在內存中的二進制位進行操作。首先要把執行運算的數據轉換為二進制數,然后才能進行執行位運算。Python中的位運算符包括位與(&)、位或(|)、位異或(^)、取反(~)、左移位(<<)和右移位(>>)。

說明

整型數據在內存中以二進制的形式表示。例如,7的32位二進制數形式如下:

其中,左邊最高位是符號位,0表示正數,1表示負數。負數通常采用補碼形式表示。例如,?7的32位二進制數形式如下:

1)位與運算符

位與運算的運算符為“&”。運算法則如下:兩個操作數據的二進制表示,只有對應數位都是1時,結果數位才是1,否則為0。如果兩個操作數的精度不同,則結果的精度與精度高的操作數相同。例如,12&8的運算過程如圖3.8所示。

2)位或運算符

位或運算的運算符為“|”。運算法則如下:兩個操作數據的二進制表示,只有對應數位都是0,結果數位才是0,否則為1。如果兩個操作數的精度不同,則結果的精度與精度高的操作數相同。例如,4|8的運算過程如圖3.9所示。

3)位異或運算符

位異或運算的運算符是“^”。運算法則如下:當兩個操作數的二進制表示相同(同時為0或同時為1)時,結果為0,否則為1。若兩個操作數的精度不同,則結果數的精度與精度高的操作數相同。例如,31^22的運算過程如圖3.10所示。

圖3.8 12&8的運算過程

圖3.9 4|8的運算過程

圖3.10 31^22的運算過程

4)位取反運算符

位取反運算也稱位非運算,運算符為“~”。位取反運算就是將操作數中對應的二進制數1修改為0,0修改為1。例如,~123的運算過程如圖3.11所示。

【實例3.6】 輸出位運算的結果。(實例位置:資源包\Code\03\06)

使用print()函數輸出圖3.8~圖3.11的位運算結果,具體代碼如下:

圖3.11 ~123的運算過程

01  print("12&8 = "+str(12&8))      #位與運算
02  print("4|8 = "+str(4|8))          #位或運算
03  print("31^22 = "+str(31^22))     #位異或運算
04  print("~123 = "+str(~123))       #位取反運算

運算結果如圖3.12所示。

5)左移位運算符

左移位運算符“<<”可將一個二進制數向左移動指定的位數,左邊(高位端)溢出的位被丟棄,右邊(低位端)的空位用0補充。左移位運算相當于乘以2的n次冪。

例如,int型數據48對應的二進制數為00110000,將其左移1位,根據左移位運算符的運算規則可以得出(00110000<<1)=01100000,轉換為十進制數就是96(相當于48*2);將其左移2位,根據左移位運算符的運算規則可以得出(00110000<<2)=11000000,轉換為十進制數就是192(相當于48*22)。其執行過程如圖3.13所示。

圖3.12 運算結果

圖3.13 左移位運算

具體代碼如下:

01  #打印將十進制的48左移1位后,獲取的十進制數字
02  print("十進制的48左移1位后,獲取的十進制數字為:",48<<1)
03  #打印將十進制的48左移2位后,獲取的十進制數字
04  print("十進制的48左移2位后,獲取的十進制數字為:",48<<2)

運行結果如圖3.14所示。

6)右移位運算符

右移位運算符“>>”用于將一個二進制操作數向右移動指定的位數,右邊(低位端)溢出的位被丟棄。在填充左邊(高位端)的空位時,如果最高位是0(正數),左側空位填入0;如果最高位是1(負數),左側空位填入1。右移位運算相當于除以2的n次冪。

48右移1位的運算過程如圖3.15所示。?80右移2位的運算過程如圖3.16所示。

圖3.14 左移位運算結果

圖3.15 48右移一位的運算過程

具體代碼如下:

01  #打印將十進制的48右移1位后,獲取的十進制數字
02  print("十進制的48右移1位后,獲取的十進制數字為:",48>>1)
03  #打印將十進制的-80右移2位后,獲取的十進制數字
04  print("十進制的-80右移2位后,獲取的十進制數字為:",-80>>2)

運行結果如圖3.17所示。

圖3.16 ?80右移兩位的運算過程

圖3.17 右移位運算結果

多學兩招

由于移位運算的速度很快,在程序中遇到表達式乘以或除以2的n次冪的情況時,一般采用移位運算來代替。

主站蜘蛛池模板: 兴城市| 二连浩特市| 平安县| 富裕县| 安新县| 晋中市| 水富县| 新田县| 和田市| 广水市| 法库县| 比如县| 遂川县| 天祝| 宁津县| 永寿县| 乌什县| 宝清县| 麻阳| 宿州市| 习水县| 巴彦淖尔市| 阿合奇县| 泽库县| 准格尔旗| 龙井市| 崇州市| 长兴县| 平原县| 长丰县| 林州市| 南阳市| 金寨县| 台中市| 布尔津县| 察隅县| 昭觉县| 麻栗坡县| 莱州市| 周口市| 富平县|