python核心編程第二版第8章習(xí)題答案分析_第1頁
python核心編程第二版第8章習(xí)題答案分析_第2頁
python核心編程第二版第8章習(xí)題答案分析_第3頁
python核心編程第二版第8章習(xí)題答案分析_第4頁
python核心編程第二版第8章習(xí)題答案分析_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、8-1.條件語句。請看下邊的代碼:# statement Aif x 0:# statement Bpasselif x 0:# statement Cpasselse:# statement Dpass# statement E(a)如果x0,上面哪個語句將被執(zhí)行?答案:(a)C(b)D(c)B82. 循環(huán). 編寫一個程序, 讓用戶輸入三個數(shù)字: (f)rom, (t)o, 和 (i)ncrement . 以 i為步長, 從 f 計數(shù)到 t , 包括 f 和 t . 例如, 如果輸入的是 f = 2, t = 26, i = 4 , 程序?qū)⑤敵?2, 6, 10, 14, 18, 22, 2

2、6.答案:sm = raw_input(Enter three numbers: )a,b,c = sm.split( )f = int(a)t = int(b)i = int(c)while f 1:if num1 % count = 0:return Falsecount -= 1else:return Truenum1 = int(raw_input(Enter a number: )print isprime(num1)85. 約數(shù).。完成一個名為 getfactors() 的函數(shù)。它接受一個整數(shù)作為參數(shù), 返回它所有約數(shù)的列表, 包括 1 和它本身。答案:def getfactors

3、(num):L = for i in range(1,num+1):if num % i = 0:L.append(i)return Lnum = int(raw_input(Enter a number: )print getfactors(num)方法二:def getfactors(num): factors= count=num/2 while count=1: if num%count=0: factors.append(count) count-=1 factors.append(num) return factorsprint getfactors(20)86. 素因子分解。以剛

4、才練習(xí)中的 isprime() 和 getfactors() 函數(shù)為基礎(chǔ)編寫一個函數(shù), 它接受一個整數(shù)作為參數(shù), 返回該整數(shù)所有素數(shù)因子的列表. 這個過程叫做求素因子分解, 它輸出的所有因子之積應(yīng)該是原來的數(shù)字. 注意列表里可能有重復(fù)的元素. 例如輸入 20 , 返回結(jié)果應(yīng)該是 2, 2, 5 。答案:def isprime(num1):count = num1 / 2while count 1:if num1 % count = 0:return Falsecount -= 1else:return Truedef prime_factors(num):L = if isprime(num)

5、:L = 1,numelse:count = num / 2prime = 2while prime 1:if num1 % count = 0:return Falsecount -= 1else:return Truedef getfactors(num):factors = count = num / 2while count = 1:if num % count = 0:factors.append(count)count -= 1return factorsdef isperfect(num):L = if isprime(num):return 0else:if sum(getfa

6、ctors(num) = num:return 1else:return 0num = int(raw_input(Enter a number: )print isperfect(num)88. 階乘。一個數(shù)的階乘被定義為從 1 到該數(shù)字所有數(shù)字的乘積。N 的階乘簡寫為 N! 。寫一個函數(shù),指定N, 返回 N! 的值。def factorial(num):if num = 0 or num = 1:return 1else:product = 1for i in range(1,num + 1):product *= ireturn productnum = int(raw_input(En

7、ter a number: )print factorial(num)89. 斐波那契數(shù)列。斐波那契數(shù)列形如1,1,2,3,5,8,13,21,等等。也就是說,下一個值是序列中前兩個值之和。寫一個函數(shù),給定N,返回第N個斐波那契數(shù)字。例如,第一個斐波那契數(shù)字是1,第6個是8。答案:def fibonacci(num):if num = 0:return 0if num = 1:return 1else:total = fibonacci(num-1) + fibonacci(num-2)return totalfor i in range(12):print fibonacci(i)8-10.

8、文本處理。統(tǒng)計一句話中的元音,輔音及單詞(以空格分割)的個數(shù)。忽略元音和輔音的特殊情況,如h,y,qu等。附加題:便攜處理這些特殊情況的代碼。答案:來自def counteng(string):words = len(string.split()string = string.upper()yuans = fus = 0for i in string:n = ord(i)if n in xrange(65,91):if n in 65,69,73,79,85:yuans += 1else:fus += 1return yuans,fus,wordsstring = raw_input(Ente

9、r a string: )print counteng(string)811. 文本處理。要求輸入一個姓名列表,輸入格式是“Last Name, First Name,” 即 姓,逗號, 名. 編寫程序處理輸入, 如果用戶輸入錯誤, 比如“First Name Last Name,” , 請糾正這些錯誤, 并通知用戶. 同時你還需要記錄輸入錯誤次數(shù). 當(dāng)用戶輸入結(jié)束后, 給列表排序, 然后以“姓 , 名 的順序顯示.輸入輸出示例(你不需要完全按照這里里例子完成):% nametrack.pyEnter total number of names: 5Please enter name 0: S

10、mith, JoePlease enter name 1: Mary Wong Wrong format. should be Last, First. You have done this 1 time(s) already. Fixing input. Please enter name 2: Hamilton,GeraldPlease enter name 3: Royce, LindaPlease enter name 4: Winston Salem Wrong format. should be Last, First. You have done this 2 time(s) a

11、lready. Fixing input.The sorted list (by last name) is:Hamilton, GeraldRoyce, LindaSalem, WinstonSmith, JoeWong, Mary答案:nums = int(raw_input(Enter total number of names: )print Enter name (lastname,firstname)i = 1error = 0names = while i =32 and i =32 and i = 126:print %dt%07dtt%ot%xtt%s %(i,int(bin

12、(i)2:),i,i,chr(i)else:print %dt%07dt%ot%x %(i,int(bin(i)2:),i,i)8-13. 程序執(zhí)行性能.在8.6.2節(jié)里,我們介紹了兩種基本的迭代序列方法:1)通過序列項,以及 2)通過序列索引遍歷.該小節(jié)的末尾我們指出后一種方法在序列很長的時候性能不佳(在我的系統(tǒng)下,性能差了將近兩倍83%)你認為它的原因是什么?答案:通過序列索引遍歷,首先創(chuàng)建一個索引列表,然后遍歷索引,再然后列表通過索引取值,多了好幾個步驟答案取自:測試代碼:import timeitnameList = Walter, Nicole, Steven, Henry, Wal

13、ter, Nicole, Steven, HenrynameList *= 1000000def inter_direct(): for eachName in nameList: #print eachName, Lim i = eachNamedef inter_index(): for nameIndex in range(len(nameList): #print nameListnameIndex, Lim #使用print的結(jié)果不準(zhǔn)的 i = nameListnameIndexif _name_ = _main_: t_index = timeit.Timer(inter_index(), from _main_ import inter_index) t_direct = timeit.Timer(inter_direct(), from _main_ import inter_direct) print t_direct.timeit(10) print t_index.ti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論