《Python核心编程》第二版第八章练习题答案 第二部分
8–7. 全數(shù). 完全數(shù)被定義為這樣的數(shù)字: 它的約數(shù)(不包括它自己)之和為它本身. 例如: 6
的約數(shù)是 1, 2, 3, 因為 1 + 2 + 3 = 6 , 所以 6 被認為是一個完全數(shù). 編寫一個名為 isperfect()
的函數(shù), 它接受一個整數(shù)作為參數(shù), 如果這個數(shù)字是完全數(shù), 返回 1 ; 否則返回 0 .
解答:
#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_7.py ''' Created on 2012-8-13@author: wanglei ''' import test8_5,sys def isperfect(num):if not type(1)==type(num): #測試用戶輸入的值是否為整數(shù)print "你輸入的不是整數(shù)!"sys.exit()alist=test8_5.getfactors(num)if sum(alist)-num==num-1:return 1else:return 0 num=input("請輸入要檢測的整數(shù): ") print isperfect(num)測試數(shù)據(jù):
請輸入要檢測的整數(shù): 6 1 請輸入要檢測的整數(shù): 100 08–8. 階乘. 一個數(shù)的階乘被定義為從 1 到該數(shù)字所有數(shù)字的乘積. N 的階乘簡寫為 N! .
寫一個函數(shù), 指定N, 返回 N! 的值.
解答:
#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_8.py ''' Created on 2012-8-13@author: wanglei ''' import sys def factorial(n):result=1while n>=1:result *=nn -=1return result num=input("請輸入一個整數(shù): ") print "%d的階乘值是: %d"%(num,factorial(num))測試數(shù)據(jù):
請輸入一個整數(shù): 5 5的階乘值是: 120請輸入一個整數(shù): 20 20的階乘值是: 24329020081766400008–9. Fibonacci 數(shù)列. Fibonacci 數(shù)列形如 1, 1, 2, 3, 5, 8, 13, 21, 等等. 也就是說,
下一個值是序列中前兩個值之和. 寫一個函數(shù), 給定 N , 返回第 N 個 Fibonacci 數(shù)字. 例如, 第
1 個 Fibonacci 數(shù)字是 1 , 第 6 個是 8 .
解答:
#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_9.py ''' Created on 2012-8-13@author: wanglei ''' import sys def fibonacci(n):if n==1:return 1elif n==2:return 1else:return fibonacci(n-1)+fibonacci(n-2) num=input("請輸入一個整數(shù): ") print fibonacci(num)測試數(shù)據(jù):
請輸入一個整數(shù): 6 8 請輸入一個整數(shù): 9 34 請輸入一個整數(shù): 15 610采用了遞歸的思路來計算斐波那契數(shù)列
?
8–10. 文本處理. 統(tǒng)計一句話中的元音, 輔音以及單詞(以空格分割)的個數(shù). 忽略元音和
輔音的特殊情況, 如 "h", "y", "qu" 等. 附加題: 編寫處理這些特殊情況的代碼.
解答:
測試數(shù)據(jù):
請輸入一句話: The quick brown fox jumps over a lazy dog. 元音有: 11個,輔音有: 22個,單詞數(shù)為: 98–11. 文本處理. 要求輸入一個姓名列表,輸入格式是“Last Name, First Name,” 即 姓,
逗號, 名. 編寫程序處理輸入, 如果用戶輸入錯誤, 比如“First Name Last Name,” , 請糾正這
些錯誤, 并通知用戶. 同時你還需要記錄輸入錯誤次數(shù). 當(dāng)用戶輸入結(jié)束后, 給列表排序, 然后以
"姓 , 名" 的順序顯示.
解答:
?
#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_11.py ''' Created on 2012-8-13@author: wanglei ''' def nameprocess():name=''wrongtime=0namelist=[]while 1:name=raw_input("請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: ")if name=='q':breakif not ',' in name[:len(name)-1]: #判斷姓名中是否有逗號,而且逗號不能再最后一位,這個判斷條件寫得鼻#比較簡單wrongtime +=1print "輸入格式有誤!你已經(jīng)錯誤%d次!請重新輸入!"%wrongtimecontinueelse:namelist.append(name)print "排序后的姓名列表為: "for eachname in sorted(namelist):print eachname nameprocess()
測試數(shù)據(jù):
請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: li,ming
請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: zhang,san
請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: lilei,
輸入格式有誤!你已經(jīng)錯誤1次!請重新輸入!
請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: hanmeimei
輸入格式有誤!你已經(jīng)錯誤2次!請重新輸入!
請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: jack,cheng
請輸入你的姓名,以姓,名的格式,如:張,三,按q結(jié)束輸入: q
排序后的姓名列表為:
jack,cheng
li,ming
zhang,san
這道題最后要求的輸出比較簡單了,所以僅僅把輸入的列表排序后輸入就好了,如果有其他的要求,可以將輸入的列表
按要求進行各種分割操作,再輸出
轉(zhuǎn)載于:https://www.cnblogs.com/hello--the-world/archive/2012/08/13/2636742.html
總結(jié)
以上是生活随笔為你收集整理的《Python核心编程》第二版第八章练习题答案 第二部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JBoss Eclipse IDE
- 下一篇: NYOJ 19