《Python核心編程》第二版第36頁第二章練習
這裡列出的答案不是來自官方資源,是我自己做的練習,可能有誤。
2.21 練習
2-1.
變數,print和字串格式化操作符。啟動互動式解譯器,給一些變數賦值(字串,數值等)並通過輸入變數名顯示他們的值。再用print語句做同樣的事。這兩者有何區別?也嘗試著使用字串格式操作符%,多做幾次,慢慢熟悉它。
【答案】
對於一個字串,在僅使用變數名時,輸出的字串是用單引號括起來了的。這是為了讓非字串對象也能以字串的方式顯示在螢幕上,即它顯示的是該對象的字串表示,而不僅僅是字串本身。如果使用print命令,能使輸出更加友好。
2-2.
程式輸出。閱讀下面的Python指令碼。
#!/usr/bin/env python
1 + 2 * 4
(a)你認為這段指令碼是用來做什麼的?
(b)你認為這段指令碼會輸出什嗎?
(c)輸入以上代碼,並儲存為指令碼,然後運行它,它所做的與你的預期一樣嗎?為什麼一樣/不一樣?
(d)這段代碼單獨執行和在互動解譯器中執行有何不同?試一下,然後寫出結果。
(e)如何改進這個指令碼,以便它能和你想象的一樣工作?
【答案】
用來計算。
會輸出9,如果是在WINDOWS系統和Ubuntu系統。
如果僅僅是以上代碼的指令碼,是沒有輸出的。
在互動解譯器中執行以後得到結果9。
如果需要將其在指令碼中執行並得到期望結果,需要改成 print 1 + 2 * 4 即可。
2-3.
數值和操作符。啟動互動解譯器,使用Python對兩個數值(任意類型)進行加、減、乘、除運算。然後使用取餘操作符來得到兩個數相除的餘數,最後使用乘方操作符求A數的B次方。
【答案】
略。
請注意Python的除法,在3.0以下的版本中,有所謂True除法和地板除。
當使用x/y形式進行除法運算時,如果x和y都是整形,那麼運算的會對結果進行截取,取運算的整數部分。
>>> print 5 / 3
1
如果x和y中有一個是浮點數,那麼會進行True除法。
>>> print 5 / 3.
1.66666666667
所謂floor除法,採用x//y的形式,得到不大於結果的最大整數值,這個運算時與運算元無關的。
>>> print -5 // 3
-2
>>> print -5 // 3.
-2.0
2-4.
使用raw_input()函數得到使用者輸入。
(a)建立一段指令碼使用raw_input()內建函數從使用者輸入得到一個字串,然後顯示這個使用者剛剛鍵入的字串。
(b)添加一段類似的代碼,不過這次輸入的是數值。將輸入資料轉換為一個數值對象,(使用int()或其他數值轉換函式)並將這個值顯示給使用者看(注意,如果你用的是早於1.5的版本,你需要使用string.ato*()函數執行這種轉換)。
【答案】
(a)代碼如下:
>>> a = raw_input("Please input a string ... ")
Please input a string ... 99
>>> print a
99
(b)代碼如下:
>>> a = raw_input("Please input a letter ... ")
Please input a letter ... b
>>> print ord(a)
98
2-5.
迴圈和數字。分別使用while和for建立一個迴圈。
(a)寫一個while迴圈,輸出整型為0~10(要確保是0~10,而不是0~9或1~10)。
(b)做同(a)一樣的事,不過這次使用range()內建函數。
【答案】
(a)for迴圈代碼如下:
>>> for i in 'abcdefghijk':
... print ord(i)-97,
...
0 1 2 3 4 5 6 7 8 9 10
(a)while迴圈代碼如下:
>>> i = 0
>>> while ( i < 11 ):
... print i,
... i = i + 1
...
0 1 2 3 4 5 6 7 8 9 10
(b)代碼如下:
>>> for i in range(0,11):
... print i,
...
0 1 2 3 4 5 6 7 8 9 10