本部落格列出的答案不是來自官方資源,是我自己做的練習,可能有誤。8-9.斐波那契數列。斐波那契數列形如1,1,2,3,5,8,13,21等等。也就是說,下一個值是序列中前兩個值之和。寫一個函數,給定N,返回第N個斐波那契數數字。例如,第1個斐波那契數字是1,第6個是8。【答案】代碼如下:def Fibonacci(number): fs = [0, 1] i = 1 for i in range(number - 1): a = fs[-1] + fs[-2]
本部落格列出的答案不是來自官方資源,是我自己做的練習,如果有疑問或者錯誤,歡迎討論。11-18. 同步化函數調用。複習一下第6章中當引入淺拷貝和深拷貝的時候,提到的丈夫和妻子情形(6.20小結)。他們共用了一個普通賬戶,同時對他們銀行賬戶訪問時會發生不利影響。建立一個程式,讓調用改變賬戶收支的函數必須同步。 【未完】 目前感覺本題有難度,暫時押後。 11-19. Variable Scope. Earlier in the chapter (see Example 11.9
2-6.條件判斷。判斷一個數是正數還是負數,或者是0。開始先用固定的數值,然後修改你的代碼支援使用者輸入數值再進行判斷。【答案】代碼如下:a = float(raw_input("Please input a number ... "))if a == 0: print "The number you input is Zero"elif a > 0: print "The number you input is Positive"else: print "This
本部落格列出的答案不是來自官方資源,是我自己做的練習,可能有誤。8-11.文本處理。要求輸入一個姓名列表,輸入格式是“Last Name, First Name”即姓逗號名。編寫程式處理輸入,如果使用者輸入錯誤,比如“Last Name First Name,”,請糾正這些錯誤,並通知使用者。同時你還需要記錄輸入錯誤次數。當使用者輸入結束後,給列表排序,然後以“姓,名”的順序顯示。輸入輸出樣本(你不需要完全按照這裡的例子完成):% nametrack.pyEnter total number
(b)代碼如下,另外一種做法,逆序尋找:def rfindchr(string, char): a = string index = -1 k = len(a) for i in a[::-1]: k = k - 1 if i == char: index = k print index break if index == -1: print 'index = ',
這是自己做的練習,可能有錯誤,歡迎討論和各種最佳化重構方案。12-1. 路徑搜尋和搜尋路徑。路徑搜尋和搜尋路徑之間有什麼不同。 【答案】 路徑搜尋(Search Path)搜尋路徑(Path Search),前者指尋找某個檔案的操作(the pursuit of a file),後者是去尋找一組目錄(through a set of directories)。本文來自部落格園balian
2-11.帶文本菜單的程式。寫一個帶文本菜單的程式,功能表項目如下:(1)取五個數的和;(2)取五個數的平均值...(X)退出。由使用者做一個選擇,然後執行相應的功能。當使用者選擇退出時程式結束。這個程式的有用之處在於使用者在功能之間切換不需要一遍一遍地重新啟動你的指令碼(這對開發人員測試自己的程式也會大有用處)。【答案】代碼如下:def to_total(): total = 0 a = [1, 2, 3, 4, 5] for i in range(0, 5):
這裡列出的答案不是來自官方資源,是我自己做的練習,可能有誤。2-15.元素排序。(a)讓使用者輸入三個數值並分別將它們報存到3個不同的變數中。不使用列表或排序演算法,自己寫代碼來對三個數由小到大排序。(b)修改(a)的解決方案,使之從大到小排序。【答案】代碼如下:SortList = [0, 1, 2]for i in range(0,3): print 'Please input the No.', i+1, 'number to be sort' SortList[i] =
這裡列出的答案不是來自官方資源,是我自己做的練習,可能有誤。5-5.取餘。取一個任意小於1美元的金額,然後計算可以換成最少多少枚硬幣。硬幣有1美分、5美分、10美分、25美分4種。1美元等於100美分。舉例來說,0.76美元計算結果應該是3枚25美分,1枚1美分。類似於76枚1美分,2枚25美分+2枚10美分+1枚5美分+1枚1美分這樣的結果都是不符合要求的。【答案】代碼如下:def verify(a): b = '0123456789' if len(a) == 2 and a[0
8-6.素因子分解。以剛才練習中的isprime()和getfactors()函數為基礎編寫一個函數,它接受一個整型作為參數,返回該整型所有素數因子的列表。這個過程叫做求素因子分解,它輸出的所有因子之積應該是原來的數字。注意列表裡可能有重複的元素。例如輸入20,返回的結果應該是[2,2,5]。【答案】代碼如下:def isprime(number): switch = True if number <= 1: switch = False for i in range(