第3章 這是什麼?變量
##3.1 神奇的變量
程式是按既定算法、用某種計算機語言所規定的指令和語言編寫的一系列指令或語言集合。算法和程式都應有以下特征:
(1)有0個或多個輸入。
(2)有0個或多個輸出。
Python作為一種計算機語言,用Python編寫的程式也具有程式的基本特征。
如果程式沒有輸入和輸出,就和我們沒有互動,這樣的程式一點都不好玩。我們玩的遊戲都是有輸入和輸出的,這樣可以互動的程式更加有趣。
我們來看一個有輸入和輸出的程式:猜年齡。

程式運作:
如果輸入的年齡是4,就會得到這樣的結果。
如果輸入的年齡是27,就會得到這樣的結果。
猜年齡程式有輸入,也有輸出,我們将猜測的年齡輸入計算機,計算機通過判斷,回報我們猜的對與錯。
如果程式有輸入,就需要計算機記憶體中空出一塊地方來存放輸入的值。比如猜年齡遊戲中輸入的數字:27,存放之後,我們給它挂上age的标簽,下次用的時候,直接找到age,拿出數字,就可以使用輸入的值了。
說不定,小朋友會說果果老師寫錯了呢。
第一個等号的意思是指派給age,也就是說讓age的值等于你輸入的年齡。
第二個等号的意思是比較age和27,看看它們是否相等。
在前面的代碼後面加上:
print(age)會出現結果27,就是剛剛輸入的年齡。
print(age =="27")會出現結果True(真),表示age和27進行比較,它們是相等的。
其中,age是變量,變量就是可變化的值。我們再玩一個遊戲—取名字。
程式運作結果為:
在計算機記憶體中,“狗狗”和“貓咪”已經存在了。然後告訴Python“狗狗”的名字叫作lili,“貓咪”的名字叫作lucy。
後面覺得lili的名字更适合“貓咪”,就給貓咪取了lili這個名字,給“狗狗”取了mili這個名字,然後告訴Python。
這樣“狗狗”和“貓咪”的名字都發生了改變。
因為把“貓咪”的名字改成了lili,是以lili隻能對應“貓咪”。
但是lucy并沒有變成其他動物的名字,是以lucy是“貓咪”的另一個名字。編寫一段代碼看看lucy是誰的名字。
(1)lili="狗狗"
程式中第一句,首先計算機在記憶體中配置設定一塊空間用于建立字元串對象“狗狗”,然後給對象“狗狗”貼上lili的标簽。
(2)lucy="貓咪"
程式中第二句,計算機在記憶體中配置設定一塊空間用于建立字元串對象“貓咪”,然後給對象“貓咪”貼上lucy的标簽。
(3)print("lili是" + lili + "的名字。")
程式中第三句,使用變量lili拿到記憶體空間中存儲的值“狗狗”,并調用print方法将内容輸出到螢幕上。
得到的運作結果是:lili是狗狗的名字。
(4)print("lucy是" + lucy + "的名字。")
程式中第四句,使用變量lucy拿到記憶體空間中存儲的值“貓咪”,并調用print方法将内容輸出到螢幕上。
得到的運作結果是:lucy是貓咪的名字。
(5)lili= "貓咪"
程式中第五句,把lili标簽從“狗狗”身上撕下來,給對象“貓咪”貼上。
(6)mili= "狗狗"
程式中第六句,給對象“狗狗”貼上mili的标簽。
(7)print("lili是" + lili + "的名字。")
程式中第七句,使用變量lili拿到記憶體空間中存儲的值“貓咪”,并調用print方法将内容輸出到螢幕上。
得到的運作結果是:lili是貓咪的名字。
(8)print("mili是" + mili + “的名字。")
程式中第八句,使用變量mili拿到記憶體空間中存儲的值“狗狗”,并調用print方法将内容輸出到螢幕上。
得到的運作結果是:mili是狗狗的名字。
一定要在前面代碼的基礎上添加下面的代碼進行比較喲!
3.2 數字的奧秘
數字資料類型主要用來存儲數字。在計算機程式設計中經常會用到數字,例如實驗資料的計算、遊戲中的得分、網上購物的支付等。Python支援4種不同的數字類型:int(整數)、long(長整型)、float(浮點型)、complex(複數)。本節主要介紹int和float。
3.2.1 數字運算符
在第1章,我們已經知道Python可以做計算題,經常使用到運算符。
“+”運算符用來進行加法運算。例如,用Python計算9+8。
“-”運算符用來進行減法運算。我們出一個難度大一點的計算題:988888-564656 ,Python能幫我們計算出來嗎?
“”運算符用來進行乘法運算。例如,用Python計算8965的值。
不過程式的乘法運算符長成這樣*。
“/”運算符用來進行除法運算。例如,用Python計算988/34的值。
程式的除法運算符長成這樣/。
3.2.2 運算順序
學習了基本的數字運算符,接下來使用它們進行運算。
3+1*9等于多少呢?
有的小朋友會說:3+ 1*9= 36
有的小朋友會說:3+ 1*9= 12
哪個才正确呢?果果老師用Python來給你們解答一下:
因為兩級運算時,先乘除,後加減。其中,加法和減法為第一級運算,乘法和除法為第二級運算。是以我們先進行乘法運算,1*9=9,再進行加法運算,9+3=12。看來要學習程式設計,數學方面也要下功夫。
再來計算一個更加複雜的題目(12+2) * 3 /2 + 4。這個計算式太複雜了,我計算不出來了。讓Python來教教我們。
這次的算式是有括号的,先計算括号中的12+2=14,再計算括号外的143/2+4。括号外的先計算乘除,是以按順序先計算乘法143=42,再計算除法42/2=21,最後計算加法21+4=25。
小朋友們,學會了嗎?我們再挑戰一個更加複雜的題目,如果這個都能計算出來,你們就很厲害了。題目是(((4+5)2)/3) +102,看着很難。别怕,讓Python來幫我們解決它。
這次的算式是括号中還套着括号,我們先計算最裡層括号的4+5=9,這時算式變成了((92)/3) +102;接下來計算外面一層括号的92=18,算式成了(18/3) +102;再往外一層計算,18/3=6,算式成了6+102;這個時候就很簡單了,先算102=20,算式變成了6+20=26。
3.2.3 給數字取一個洋氣的英文名
在猜年齡遊戲中,我們用age接收輸入的數字27,計算機在記憶體中建立了數字對象27(當時使用的是字元串“27”,我們暫時了解為數字),然後挂上了标簽age。這樣我們就為數字對象建立了變量age,就像給數字取了一個洋氣的英文名字一樣。
這個簡單的運算也可以用變量來表示。我們為1建立一個變量first,為4建立一個變量second,然後進行計算,把兩個變量加起來,代碼如下:
我們要計算1.2*5等于多少,用變量怎麼表示呢?首先為浮點數1.2建立一個變量a,然後為整數5建立一個變量b,再進行相應的計算。
為了鞏固學習,我們再來計算3/2,看看結果是多少。
##3.3 字元串是什麼東西
接下來,我們為字元串建立變量,其實和數字是一樣的。
這就建立了一個字元串對象,并指派給了str。後面如果需要使用"Hello World!",我們通過操作str就可以。例如,我們要輸出"Hello World!"到螢幕上,通過操作str即可。代碼如下:
Python也可以用單引号辨別字元串,例如:
依然可以看到,螢幕上列印出了Hello World!。
字元串變量的作用
通過字元串變量,我們可以對字元串對象進行操作。
1. 拼接字元串變量
我們在螢幕上輸入名字,讓Python記住。
我們可以将兩個字元串變量相加,變成一個新的字元串。
輸入名字:果果,程式運作結果為:
在上述程式中,我們将字元串變量name和字元串變量str相加,成為一個新的字元串new。我們将這個操作稱為字元串的拼接操作。如果将數字變量和字元串變量相加,會發生什麼呢?我們來實踐一下。
定義兩個變量,var_1為字元串變量,var_2為數字變量,将var_1和var_2進行加法操作。
程式運作出錯了,錯誤提示:隻能拼接兩個字元串變量,是以字元串變量和數字變量是不能進行拼接操作的。
2. 字元串變量的截取
我們能擷取字元串變量中的一個字元。
在上述程式中,我們先建立了一個字元串對象“i love my family!”,給字元串貼上了var的标簽,我們擷取了字元串對象的第2位var[2]。
給字元串對象的第2位貼上了var_1标簽并且列印在螢幕上。如果我們要取字元串對象中的love,要怎麼寫呢?
在上述程式中,我們通過var[2:6]截取了字元串對象中的love。
3. 大小寫快速互換
我們可以改變字元串變量的大小寫。
程式運作結果顯示,"HAVE A GOOD DAY!"成功轉換為了小寫:
在上述程式中,我們将"HAVE A GOOD DAY!"轉換為小寫:have a good day!,這是通過lower ( )函數來完成的。
在上述程式中,我們将"happy birthday to you!"轉換為大寫:HAPPY BIRTHDAY TO YOU!,這是通過upper ()函數來完成的。
4.在字元串中插入變量
我們可以在字元串中的某一個位置插入變量。
接下來,我們用這個方法來歡迎新同學。
在上述程式中,大家可以看到我們使用了兩個百分号%就将“米粒”插入了“歡迎同學來到果果老師的程式設計課程!”這句話中。
首先第一個%s告訴Python要在哪個位置插入字元串,第二個%告訴Python要插入的字元串是哪個,Python知道了之後,就會幫助我們在字元串中插入變量。
%s表示插入的變量是字元串變量,我們也可以插入數字變量,将s改成d就可以了。
上述程式中,我們通過%d在字元串中插入了整數。
age = int(input("請輸入你的年齡:"))這句代碼接收輸入的值,并把輸入的值轉化為整數。
##3.4 變量的可變性
變量是可變的,我們在前面已經介紹過了,那麼變量有多可變呢?我們來玩幾個遊戲就明白了。
第一個遊戲:我們的老師。我的老師叫大果老師,你的老師也叫大果老師,我們的老師都是大果老師。計算機先建立了“大果老師”字元串對象,然後給字元串對象貼上了myTeacher标簽,将變量myTeacher指派給yourTeacher,字元串對象貼上了yourTeacher标簽。是以,兩個變量可以指向同一個對象。
第二個遊戲:大變身。
在上述程式中,我們首先建立了mili字元串對象,然後給字元串對象貼上了var标簽,這時輸出var變量的值為mili;接下來,我們建立了一個數字對象7,把var标簽從字元串對象上拿下來,貼到了數字對象上,這時輸出var變量的值為7。
##3.5 變量取名字很講究
前面例子中的變量名大家注意到了嗎?基本上都是以字母開頭的,大家知道為什麼嗎?原來Python變量的命名需要遵循一定的規則,變量的命名規則有很多,下面我們介紹常用的規則。
變量可以取你喜歡的任何名字。不過最好記住一點,變量的名字由字母、數字或者下畫線“_”組成,不能使用空格、連字元、标點符号、引号或其他字元。例如var$就是不合法的,Python會幫我們指出來。
Python提示我們invalid syntax,意思是無效的文法。
變量名的第一個字元是有限制的,第一個字元隻能是字母或者下畫線,如果是字母,那麼最好以小寫字母開頭。第一個字元不可以是數字。例如,2h這樣的變量名是不合法的,b2、a_1、_1a都是合法的變量名。
Python變量名是區分大小寫的。也就是說,bc和Bc是兩個不同的變量名。在程式中,我們定義了bc變量,要輸出bc變量,但是我們把bc變量寫成了Bc,這個時候Python就不認識了,因為我們定義的變量是bc,而不是Bc。
雖然變量名的長度沒有限制,但是不建議太長。如果是這樣的:sdklfksdjlfjsdalkjfjksdaklfjkasdfkaskdlfjkas,就會很容易出錯。
變量名最好取一眼就能明白的,比如年齡:age,姓名:name。
##3.6 變量學習小結
- 學習變量:變量是一個可變化的值,在Python中是一個标簽。
- 基本資料類型——數字以及數字的+、-、×、÷運算。
- 基本資料類型——字元串以及字元串的拼接、截取、大小寫等操作。
- 變量的可變性。
- 變量的命名規則。
##3.7 趣味小挑戰
- 建立一個合法的變量,列印出你最喜歡的一句格言。
- 進行數字運算并得出答案:((2+5)*4+2)/3-2。
- 截取字元串“Believe in yourself”中的Believe,并列印到螢幕上。
- 在字元串“我們要保護地球”中的地球前面插入你喜歡的修飾語。