




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、8-1.條件語句。請看下邊的代碼:# statement Aif x > 0:# statement Bpasselif x < 0:# statement Cpasselse:# statement Dpass# statement E(a)如果x<0,上面哪個語句(A,B,C,D,E)將被執行?(b)如果x=0,上面哪個語句將被執行?(c)如果x>0,上面哪個語句將被執行?答案:(a)C(b)D(c)B82. 循環. 編寫一個程序, 讓用戶輸入三個數字: (f)rom, (t)o, 和 (i)ncrement . 以 i為步長, 從 f 計數到 t , 包括 f 和
2、 t . 例如, 如果輸入的是 f = 2, t = 26, i = 4 , 程序將輸出 2, 6, 10, 14, 18, 22, 26.答案:sm = raw_input('Enter three numbers: ')a,b,c = sm.split(' ')f = int(a)t = int(b)i = int(c)while f <= t:print f,f += i8-3.range()。如果我們需要生成下面的這些列表,分別需要在range()內建函數中提供哪些參數?(a)0,1,2,3,4,5,6,7,8,9(b)3,6,9,12,15,18
3、(c)-20,200,420,640,860答案:(a)range(0,10)(b)range(3,19,3)(c)range(-20,861,220)84. 素數. 我們在本章已經給出了一些代碼來確定一個數字的最大約數或者它是否是一個素數. 請把相關代碼轉換為一個返回值為布爾值的函數,函數名為 isprime() . 如果輸入的是一個素數, 那么返回 True , 否則返回 False .答案:def isprime(num1):count = num1 / 2while count > 1:if num1 % count = 0:return Falsecount -= 1else:
4、return Truenum1 = int(raw_input('Enter a number: ')print isprime(num1)85. 約數.。完成一個名為 getfactors() 的函數。它接受一個整數作為參數, 返回它所有約數的列表, 包括 1 和它本身。答案:def getfactors(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)方法
5、二: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. 素因子分解。以剛才練習中的 isprime() 和 getfactors() 函數為基礎編寫一個函數, 它接受一個整數作為參數, 返回該整數所有素數因子的列表. 這個過程叫做求素因子分解, 它輸出的所有因子之積應該是原來的數字. 注意列表里可能有重復的元素. 例如
6、輸入 20 , 返回結果應該是 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):L = 1,numelse:count = num / 2prime = 2while prime <= count:if num % prime = 0:L.append(prime)num /= primeelse:prime
7、 += 1return Lnum = int(raw_input('Enter a number: ')print prime_factors(num)87. 全數。完全數被定義為這樣的數字: 它的約數(不包括它自己)之和為它本身. 例如: 6的約數是 1, 2, 3, 因為 1 + 2 + 3 = 6 , 所以 6 被認為是一個完全數. 編寫一個名為 isperfect()的函數, 它接受一個整數作為參數, 如果這個數字是完全數, 返回 1 ; 否則返回 0 .答案:def isperfect(num):L = for i in range(1,num):if num % i
8、 = 0:L.append(i)print Lif sum(L) = num:return 1else:return 0num = int(raw_input('Enter a number: ')print isperfect(num)Method two:def isprime(num1):count = num1 / 2while count > 1:if num1 % count = 0:return Falsecount -= 1else:return Truedef getfactors(num):factors = count = num / 2while
9、count >= 1:if num % count = 0:factors.append(count)count -= 1return factorsdef isperfect(num):L = if isprime(num):return 0else:if sum(getfactors(num) = num:return 1else:return 0num = int(raw_input('Enter a number: ')print isperfect(num)88. 階乘。一個數的階乘被定義為從 1 到該數字所有數字的乘積。N 的階乘簡寫為 N! 。寫一個函數,指
10、定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('Enter a number: ')print factorial(num)89. 斐波那契數列。斐波那契數列形如1,1,2,3,5,8,13,21,等等。也就是說,下一個值是序列中前兩個值之和。寫一個函數,給定N,返回第N個斐波那契數字。例如,第一個斐波那契數字是1,第6個是8。
11、答案: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.文本處理。統計一句話中的元音,輔音及單詞(以空格分割)的個數。忽略元音和輔音的特殊情況,如"h","y","qu"等。附加題:便攜處理這些特殊情況的代碼。答案:來自def counteng(string):words
12、 = 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('Enter a string: ')print counteng(string)811. 文本處理。要求輸入一個姓名列表,輸入格式是“Last Name, First Name,” 即 姓,逗號
13、, 名. 編寫程序處理輸入, 如果用戶輸入錯誤, 比如“First Name Last Name,” , 請糾正這些錯誤, 并通知用戶. 同時你還需要記錄輸入錯誤次數. 當用戶輸入結束后, 給列表排序, 然后以“姓 , 名" 的順序顯示.輸入輸出示例(你不需要完全按照這里里例子完成):% nametrack.pyEnter total number of names: 5Please enter name 0: Smith, JoePlease enter name 1: Mary Wong>> Wrong format. should be Last, First.&g
14、t;> 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) already. Fixing input.The sorted list (by last name) is
15、: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 <= nums:name = raw_input('Enter name %d: ' %i)symbol = name.strip().split(','
16、)if len(symbol) = 2:print names.append(symbol1+','+symbol0)i += 1else:print "The format is not correct, and You've been wrong %d times." %errorerror += 1if error = 3:print "Too many times you're wrong"breakfor i in names:print i12. (整型)位操作. 編寫一個程序,用戶給出起始和結束數字后給出一個
17、下面這樣的表格,分別顯示出兩個數字間所有整型的十進制,二進制,八進制和十六進制表示.如果字符是可打印的ASCII字符,也要把它打印出來,如果沒有一個是可打印字符,就省略掉ASCII那一 欄的表頭.請參考下面的輸入輸出格式: 輸出示例1 - 輸入起始值:9 輸入結束值:18 DEC BIN OCT HEX - 9 01001 11 9 10 01010 12 a 11 01011 13 b 12 01100 14 c 13 01101 15 d 14 01110 16 e 15 01111 17 f 16 10000 20 10 17 10001 21 11 18 10010 22 12 輸出示
18、例2 - 輸入起始值:26 輸入結束值:41 DEC BIN OCT HEX ASCII - 26 011010 32 1a 27 011011 33 1b 28 011100 34 1c 29 011101 35 1d 30 011110 36 1e 31 011111 37 1f 32 100000 40 20 33 100001 41 21 ! 34 100010 42 22 " 35 100011 43 23 # 36 100100 44 24 $ 37 100101 45 25 % 38 100110 46 26 & 39 100111 47 27 ' 40
19、 101000 50 28 ( 41 101001 51 29 ) #coding:utf-8start1 = int(raw_input('t輸入起始值:'.decode('utf-8').encode('gbk')end1 = int(raw_input('t輸入結束值:'.decode('utf-8').encode('gbk')title = 'DECtBINtOCTtHEX'for i in range(start1,end1):if i >=32 and i <
20、;= 126:title = u'十進制t二進制tt八進制t十六進制tASCII'breakprint titlefor i in range(start1,end1):if i >=32 and i <= 126:print '%dt%07dtt%ot%xtt%s' %(i,int(bin(i)2:),i,i,chr(i)else:print '%dt%07dt%ot%x' %(i,int(bin(i)2:),i,i)8-13. 程序執行性能.在8.6.2節里,我們介紹了兩種基本的迭代序列方法:1)通過序列項,以及 2)通過序列索引
21、遍歷.該小節的末尾我們指出后一種方法在序列很長的時候性能不佳(在我的系統下,性能差了將近兩倍83%)你認為它的原因是什么?答案:通過序列索引遍歷,首先創建一個索引列表,然后遍歷索引,再然后列表通過索引取值,多了好幾個步驟答案取自:測試代碼:import timeitnameList = 'Walter', 'Nicole', 'Steven', 'Henry', 'Walter', 'Nicole', 'Steven', 'Henry'nameList *= 1000000de
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年學前教育教學信息化解決方案深度研究報告
- 社會團體財務管理
- 金礦采選工程可行性研究報告(參考)
- 消防安全管理臺賬
- 高速數控銑床行業跨境出海項目商業計劃書
- 高清激光投影儀行業跨境出海項目商業計劃書
- 歷史博物館導覽服務行業深度調研及發展項目商業計劃書
- 高速頻率計與信號源行業深度調研及發展項目商業計劃書
- 電子熒光發光材料企業制定與實施新質生產力項目商業計劃書
- 高效空氣壓縮機維護行業跨境出海項目商業計劃書
- 雙向轉診管理制度 流程圖
- 中層管理崗位競聘申請表
- 沸騰爐常用參數
- GB/T 819.1-2000十字槽沉頭螺釘第1部分:鋼4.8級
- GB/T 19355.1-2016鋅覆蓋層鋼鐵結構防腐蝕的指南和建議第1部分:設計與防腐蝕的基本原則
- 08功能薄膜材料
- 在人民報創刊紀念會上的演說
- 房產稅稅收政策解析課件
- 辦文辦會制度(縣級)
- 最新結構新舊混凝土結構設計規范對比
- 醫院學科帶頭人選拔及激勵機制
評論
0/150
提交評論