目錄:
一、變數
二、字串
>原始字串
>長字串
三、課時03課後習題及答案
***********
一、變數
***********
變數名就像我們現實社會的名字,把一個值賦值給一個名字時,Ta會儲存在記憶體中,稱之為變數(variable),在大多數語言中,都把這種行為稱為“給變數賦值”或“把值儲存在變數中”。
不過Python與大多數其他計算機語言的做法稍有不同,Ta並不是把值儲存在變數中,而更像是把名字貼在值的上邊。所以有些Python程式設計師會說“Python”沒有“變數”,只有“名字”。
看個例子:
>>> teacher = "小甲魚"
>>> print(teacher)
小甲魚
>>> teacher = "老甲魚"
>>> print (teacher)
老甲魚
變數為什麼不叫”恆量“而叫變數?正因為它是可變的!再看另外一個例子:
>>> x = 3
>>> x = 5
>>> y = 8
>>> z = x + y
>>> print(z)
13
同樣的方法也可以應用到字串中:
>>> myteacher = "小甲魚"
>>> yourteacher = "老甲魚"
>>> ourteacher = myteacher + yourteacher
>>> print(ourteacher)
小甲魚老甲魚
這種字串加字串的語法,在Python裡稱為字串的拼接。
這裡進行了一番想法的測試,想看看變數的值變過後,其相應的id地址是否發生了變化:
>>> y = 1 >>> print(y) 1 >>> id(y) 140728562340896 >>> y = 2 >>> print(y) 2 >>> id(y) 140728562340928
經實驗證明,同一變數的值發生變化過後,其id地址也發生了變化。
需要注意的地方:
>在使用變數之前,需要對其先賦值。
>變數名可以包括字母、數字、下劃線,但變數名不能以數字開頭。
>字母可以是大寫或小寫,但大小寫是不同的。也就是說fishc和FishC對於Python來說是完全不同的兩個名字
>等號(=)是賦值的意思,左邊是名字,右邊是值,不可寫反咯。
*************
二、字串
*************
到目前為止,我們所認知的字串就是引號內的一切東西,我們也把字串叫做文字,文字和數字是截然不同的,我們看例子:
13
>>> "5"+"8" #字串的拼接
'58'
>>> '5'+'8'
'58'
>>> 'Python I love you!"
SyntaxError: EOL while scanning string literal
要告訴Python你在建立一個字串,就要在字元兩邊加上引號,可以是單引號或者雙引號,Python女士表示不挑剔。但必須成對,你不能一邊單引號,另一邊卻花心的用上雙引號結尾。
如果字串中需要出現單引號或雙引號怎麼辦?
例如我想列印字串:Let’s go!
有兩種方法,第一種比較常用,就是使用我們的轉義符號(\)對字串中的引號進行轉義。
還有一種就是利用Python既可以用單引號也可以用雙引號來表示字串這一特點,用上不同的引號表示字串。
>>> 'Let\'t go'
"Let't go"
>>> print('Let\'t go')
Let't go
>>> "Let't go"
"Let't go"
>>> print("Let't go")
Let't go
因為\now中的\n是被print識別成了轉移符號——回車。
然而直接顯示字串轉義符號不會被解釋,
所以就會這樣。
原始字串:
好像反斜槓是一個好東西,但不妨試試列印:
>>> str = 'C:\now'
>>> str
'C:\now'
>>> print(str)
C:
ow
我們可以用反斜槓對自身進行轉義:
>>> str = 'C:\\now'
>>> str
'C:\\now'
>>> print(str)
C:\now
但如果對於一個字串中有很多個反斜槓:
原始字串的使用非常簡單,只需要在字串前邊加一個英文字母r即可:
>>> str = r"C:\Program Files\Intel\WiFi\Help"
>>> str
'C:\\Program Files\\Intel\\WiFi\\Help'
>>> print(str)
C:\Program Files\Intel\WiFi\Help
在使用字串的時候需要注意一點是:無論是否原始字串,都不能以反斜槓作為結尾。如果你堅持這樣會報錯。
>>> string = 'FishC\'
SyntaxError: EOL while scanning string literal
長字串:
如果希望得到一個跨越多行的字串,例如:
我愛魚C,
正如我愛小甲魚,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的聲音,
總纏繞於我的腦海,
久久不肯散去……
這我們就需要使用到三重引號字串!
>>> print("""
我愛魚C,
正如我愛小甲魚,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的聲音,
總纏繞於我的腦海,
久久不肯散去……
""")
我愛魚C,
正如我愛小甲魚,
他那呱唧呱唧
呱唧呱唧
呱唧呱唧的聲音,
總纏繞於我的腦海,
久久不肯散去……
*******************************
三、課時03課後習題及答案
*******************************
測試題:
0. 以下哪個變數的命名不正確?為什麼?
(A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM
1. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?
1 >>>myteacher = '小甲魚'
2 >>>yourteacher = myteacher
3 >>>yourteacher = '黑夜'
4 >>>print(myteacher)
解釋一下,這幾行程式碼:首先,想象一下有一個叫做“小甲魚“資料,程式碼myteacher = '小甲魚'實現了將變數myteacher指向了這一個資料,進而存入了記憶體中,也就是為”小甲魚“貼上了myteacher的標籤;程式碼yourteacher = myteacher,將變數yourteacher也指向了這一個資料,這時候有兩個變數指向同一資料;第三行程式碼,(我們說python並不是把值儲存在變數中,而更像是將名字貼在值上面)所以,變數yourteacher變卦了,指向了”黑夜“這一資料,而myteacher還是指向小甲魚這一資料。我們可看看它們id地址的變換情況。
>>> myteacher = "小甲魚" >>> id(myteacher) 3249577405872 >>> yourteacher = myteacher >>> id(yourteacher) 3249577405872 >>> yourteacher = "黑夜" >>> id(yourteacher) 3249577880632 >>> id(myteacher) 3249577405872
2. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?
1 >>> myteacher = '小甲魚'
2 >>> yourteacher = myteacher
3 >>> myteacher = '黑夜'
4 >>> print(yourteacher)
3. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?
1 >>>first = 520
2 >>>second = '520'
3 >>>first = second
4 >>>print(first)
4. 如果非要在原始字串結尾輸入反斜槓,可以如何靈活處理?
5. 在這一講中,我們說變數的命名需要注意一些地方,但小甲魚在舉例的時候貌似卻幹了點兒“失誤”的事兒,你能看得出小甲魚例子中哪裡有問題嗎?
動動手:
0. 還記得我們第一講的動動手的題目嗎?這一次要求使用變數,計算一年有多少秒?
提示:可以以 DaysPerYear(每年天數),HoursPerDay(每天小時數),MinutesPerHour(每小時分鐘數),SecondsPerMinute(每分鐘秒數)為變數名。
1. 關於最後提到的長字串(三重引號字串)其實在 Python3 還可以這麼寫,不妨試試,然後比較下哪種更方便?
1 >>> string = (
2 "我愛魚C,\n"
3 "正如我愛小甲魚,\n"
4 "他那呱唧呱唧的聲音,\n"
5 "總纏繞於我的腦海,\n"
6 "久久不肯散去……\n")
答案:
測試題答案:
(C)選項不正確,因為 Python 中的變數名不能以數字開頭。
1. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?
會列印:小甲魚
2. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?
會列印:小甲魚
3. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?
會列印:520,注:這裡沒有單引號括起來,但是他是一個字串,因為使用 print() 列印,所以不包含單引號。可以試試直接>>>first,它是一個字串的。
4. 如果非要在原始字串結尾輸入反斜槓,可以如何靈活處理?
>>> str = r'C:\Program Files\FishC\Good''\\'
>>> str
'C:\\Program Files\\FishC\\Good\\'
>>> print(str)
C:\Program Files\FishC\Good\
6. 在這一講中,我們說變數的命名需要注意一些地方,但小甲魚在舉例的時候貌似卻幹了點兒“失誤”的事兒,你能看得出小甲魚例子中哪裡有問題嗎?
在例子中小甲魚起了個 str 名字的變數,但事實上我們發現,str 的顏色跟普通變數貌似不同?沒錯,str() 和 print() 都是內建函式,但 Python 貌似不介意我們對內建函式進行賦值操作,所以這點我們以後就要注意啦.
動動手答案:
1 >>> DaysPerYear = 365
2 >>> HoursPerDay = 24
3 >>> MinutesPerHour = 60
4 >>> SecondsPerMinute = 60
5 >>> result = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
6 >>> result
7 31536000
8 >>> print(result)
9 31536000
小甲魚備註:大家看到了要給變數起一個合適的名字並不容易,但在很多文件中,這類名字隨處可見,所以要習慣。