Python 程式設計/變數和字串
在本節中,您將被介紹兩種不同的 Python 資料型別:變數和字串。請透過執行包含的程式並檢查其輸出,跟著學習。
變數是儲存可能變化的值的東西。簡單來說,變數就像一個盒子,你可以把東西放進去。你可以使用變數來儲存各種東西,但現在,我們只關注將數字儲存在變數中。
lucky = 7
print (lucky)
7
這段程式碼建立了一個名為lucky的變數,並將整數7分配給它。當我們要求 Python 告訴我們變數lucky中儲存了什麼時,它會再次返回該數字。
我們也可以更改變數內部的內容。例如
changing = 3
print (changing)
3
changing = 9
print (changing)
9
different = 12
print (different)
12
print (changing)
9
changing = 15
print (changing)
15
我們宣告一個名為changing的變數,在其中放入整數3,並驗證分配是否正確完成。然後,我們將整數9分配給changing,並再次詢問changing中儲存了什麼。Python 已經丟棄了3,並用9替換了它。接下來,我們建立一個第二個變數,我們稱之為different,並將12放入其中。現在我們有兩個獨立的變數,different和changing,它們儲存著不同的資訊,即,為其中一個分配新值不會影響另一個。
您還可以將一個變數的值設定為另一個變數的值。例如
red = 5
blue = 10
print (red, blue)
5 10
yellow = red
print (yellow, red, blue)
5 5 10
red = blue
print (yellow, red, blue)
5 10 10
要理解這段程式碼,請記住,變數的名稱始終位於等號(賦值運算子)的左側,而變數的值位於等號的右側。先寫名稱,後寫值。
我們首先宣告red是5,blue是10。如您所見,您可以向print傳遞多個引數,告訴它在一行上列印多個專案,並用空格分隔它們。正如預期的那樣,Python 報告red儲存5,blue儲存10。
現在我們建立一個第三個變數,叫做yellow。為了設定它的值,我們告訴 Python 我們希望yellow是red的值。(記住:名稱在左邊,值在右邊。)Python 知道red是5,所以它也設定yellow為5。
現在我們將red變數設定為blue變數的值。不要混淆——名稱在左邊,值在右邊。Python 查詢blue的值,發現它是10。因此,Python 丟棄了red的舊值(5),並用10替換了它。在這次賦值之後,Python 報告yellow是5,red是10,blue是10。
但是我們不是說yellow應該是red的值嗎?yellow仍然是5而red是10的原因是,我們只說yellow應該是red在賦值那一刻的值。在 Python 弄清楚red是什麼並將該值分配給yellow之後,yellow就不再關心red了。yellow現在有一個值,並且該值將保持不變,無論red發生什麼。
對於變數的名稱,它只能包含大寫和小寫字母(A-Z、a-z)、數字(0-9)和下劃線字元(_),並且名稱的第一個字元不能是數字。例如,1abc和_#$ad不是有效的變數名,而_123和a__bc是有效的變數名。
'字串'僅僅是一個按順序排列的字元列表。一個字元是您可以在鍵盤上一次按鍵輸入的任何東西,例如字母、數字或反斜槓。例如,“hello”是一個字串。它有五個字元長——h、e、l、l、o。字串也可以包含空格:“hello world”包含 11 個字元:10 個字母和“hello”和“world”之間的空格。字串中可以包含的字元數量沒有限制——您可以包含一個到一百萬個或更多個字元。您甚至可以有一個包含 0 個字元的字串,這通常稱為“空字串”。
在 Python 中,您可以用三種方式宣告字串:單引號 (')、雙引號 (") 和三引號 (""")。在所有情況下,您都用選擇的字串宣告符開始和結束字串。例如
>>> print ('I am a single quoted string')
I am a single quoted string
>>> print ("I am a double quoted string")
I am a double quoted string
>>> print ("""I am a triple quoted string""")
I am a triple quoted string
您可以在字串中使用引號,方法是在引號之前放置一個反斜槓,這樣 Python 就會知道您想要將引號包含在字串中,而不是在那裡結束字串。在另一個符號之前直接放置反斜槓被稱為對該符號進行轉義。
>>> print ("So I said, \"You don't know me! You'll never understand me!\"")
So I said, "You don't know me! You'll never understand me!"
>>> print ('So I said, "You don\'t know me! You\'ll never understand me!"')
So I said, "You don't know me! You'll never understand me!"
>>> print ("""The double quotation mark (\") is used to indicate direct quotations.""")
The double quotation mark (") is used to indicate direct quotations.
如果您想在字串中包含反斜槓,則必須對該反斜槓進行轉義。這告訴 Python 您想要將反斜槓包含在字串中,而不是將其用作跳脫字元。例如
>>> print ("This will result in only three backslashes: \\ \\ \\")
This will result in only three backslashes: \ \ \
如您從上面的例子中看到的,只有用於引用字串的特定字元需要轉義。這使得程式碼更易讀。
要了解如何使用字串,讓我們回顧一下一個熟悉的程式
>>> print("Hello, world!")
Hello, world!
看看!從一開始您就在使用字串了!
您可以使用+運算子將兩個字串加在一起:這稱為連線它們。
>>> print ("Hello, " + "world!")
Hello, world!
請注意,第一個字串的末尾有一個空格。如果您不加進去,這兩個詞就會連在一起,最終會得到Hello,world!
您還可以使用*運算子重複字串,如下所示
>>> print ("bouncy " * 5)
bouncy bouncy bouncy bouncy bouncy
>>> print ("bouncy " * 10)
bouncy bouncy bouncy bouncy bouncy bouncy bouncy bouncy bouncy bouncy
字串bouncy在第一個例子中被重複了 5 次,在第二個例子中被重複了 10 次。
如果您想找出字串的長度,可以使用len()函式,它只接受一個字串並計算其中的字元數。(len代表“長度”。)只需將要查詢長度的字串放在函式的括號內即可。例如
>>> print (len("Hello, world!"))
13
現在您已經瞭解了變數和字串,讓我們看看它們如何協同工作。
變數可以儲存的不僅僅是數字。您也可以使用它們來儲存字串!以下是方法
question = "What did you have for lunch?"
print (question)
What did you have for lunch?
在這個程式中,我們建立了一個名為question的變數,並將字串“What did you have for lunch?”儲存在其中。然後,我們只是告訴 Python 打印出question變數中的內容。請注意,當我們告訴 Python 打印出question時,question周圍沒有引號:這告訴 Python 我們正在使用一個變數,而不是一個字串。如果我們在question周圍加上引號,Python 會將其視為一個字串,如下所示
question = "What did you have for lunch?"
print ("question")
question
讓我們嘗試一些不同的東西。當然,詢問使用者午餐吃了什麼很好,但如果他們不能回應,就沒有多大區別!讓我們編輯這個程式,以便使用者可以輸入他們吃的東西。
question = "What did you have for lunch?"
print (question)
answer = raw_input() #You should use "input()" in python 3.x, because python 3.x doesn't have a function named "raw_input".
print ("You had " + answer + "! That sounds delicious!")
為了要求使用者寫下一些東西,我們使用了名為raw_input()的函式,它會一直等待使用者寫下內容並按下回車鍵,然後返回使用者寫下的內容。不要忘記括號!即使括號裡面沒有內容,它們也很重要,如果省略括號,Python 會報錯。您還可以使用另一個名為input()的函式,它的工作方式幾乎相同。我們將在後面學習這兩個函式之間的區別。
在這個程式中,我們建立了一個名為 answer 的變數,並將使用者輸入的任何內容放入其中。然後,我們打印出一個新字串,其中包含使用者輸入的任何內容。注意 "You had " 字串末尾的空格,以及 "! That sounds delicious!" 字串開頭的感嘆號。它們有助於格式化輸出並使其看起來美觀,這樣字串就不會全部連在一起。
看看這個程式,看看你是否能弄清楚它應該做什麼。
print ("Please give me a number: ")
number = raw_input()
plusTen = number + 10
print ("If we add 10 to your number, we get " + plusTen)
這個程式應該從使用者那裡獲取一個數字,加上 10,然後打印出結果。但是,如果你嘗試執行它,它將無法正常工作!你將得到一個類似於此的錯誤
Traceback (most recent call last):
File "test.py", line 5, in <module>
print "If we add 10 to your number, we get " + plusTen
TypeError: cannot concatenate 'str' and 'int' objects
這裡發生了什麼?Python 告訴我們有一個 TypeError,這意味著資訊型別使用有問題。具體來說,Python 無法弄清楚如何協調同時使用的兩種資料型別:整數和字串。例如,Python 認為 number 變數儲存的是一個字串,而不是一個數字。如果使用者輸入 15,那麼 number 將包含一個包含兩個字元的字串:一個 1,後面跟著一個 5。那麼我們如何告訴 Python 15 應該是一個數字,而不是一個字串呢?
此外,在列印答案時,我們告訴 Python 將一個字串 ("If we add 10 to your number, we get ") 和一個數字 (plusTen) 連線在一起。Python 不知道如何做到這一點——它只能將字串連線在一起。我們如何告訴 Python 將一個數字視為一個字串,以便我們可以將其與另一個字串一起打印出來?
幸運的是,有兩個函式是這些問題的完美解決方案。int() 函式將接受一個字串並將其轉換為整數,而 str() 函式將接受一個整數並將其轉換為字串。在這兩種情況下,我們都將要更改的內容放在括號中。因此,我們修改後的程式將如下所示
print ("Please give me a number:",)
response = raw_input()
number = int(response)
plusTen = number + 10
print ("If we add 10 to your number, we get " + str(plusTen))
關於字串和變數,你只需要知道這些!我們將在後面學習更多關於型別的知識。
print():將輸出資訊列印給使用者input()或raw_input():向用戶詢問響應,並返回該響應。(請注意,在版本 3.x 中,raw_input()不存在,已被input()取代)len():返回字串的長度(字元數)str():返回物件的字串表示int():給定一個字串或數字,返回一個整數
- 編寫一個程式,要求使用者輸入一個字串,然後告訴使用者該字串的長度。
- 向用戶詢問一個字串,然後詢問一個數字。打印出該字串,列印該數字次數。(例如,如果字串是
hello並且數字是3,那麼你應該打印出hello hello hello。) - 如果一個惡作劇的使用者在詢問數字時輸入了一個單詞,會發生什麼?試試看。