日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

《Python核心编程》第二版第八章练习题答案 第二部分

發布時間:2025/5/22 python 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Python核心编程》第二版第八章练习题答案 第二部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8–7. 全數. 完全數被定義為這樣的數字: 它的約數(不包括它自己)之和為它本身. 例如: 6
的約數是 1, 2, 3, 因為 1 + 2 + 3 = 6 , 所以 6 被認為是一個完全數. 編寫一個名為 isperfect()

的函數, 它接受一個整數作為參數, 如果這個數字是完全數, 返回 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): #測試用戶輸入的值是否為整數print "你輸入的不是整數!"sys.exit()alist=test8_5.getfactors(num)if sum(alist)-num==num-1:return 1else:return 0 num=input("請輸入要檢測的整數: ") print isperfect(num)

測試數據:

請輸入要檢測的整數: 6 1 請輸入要檢測的整數: 100 0

8–8. 階乘. 一個數的階乘被定義為從 1 到該數字所有數字的乘積. N 的階乘簡寫為 N! .
寫一個函數, 指定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("請輸入一個整數: ") print "%d的階乘值是: %d"%(num,factorial(num))

測試數據:

請輸入一個整數: 5 5的階乘值是: 120請輸入一個整數: 20 20的階乘值是: 2432902008176640000

8–9. Fibonacci 數列. Fibonacci 數列形如 1, 1, 2, 3, 5, 8, 13, 21, 等等. 也就是說,
下一個值是序列中前兩個值之和. 寫一個函數, 給定 N , 返回第 N 個 Fibonacci 數字. 例如, 第
1 個 Fibonacci 數字是 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("請輸入一個整數: ") print fibonacci(num)

測試數據:

請輸入一個整數: 6 8 請輸入一個整數: 9 34 請輸入一個整數: 15 610

采用了遞歸的思路來計算斐波那契數列

?

8–10. 文本處理. 統計一句話中的元音, 輔音以及單詞(以空格分割)的個數. 忽略元音和
輔音的特殊情況, 如 "h", "y", "qu" 等. 附加題: 編寫處理這些特殊情況的代碼.

解答:

#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_10.py ''' Created on 2012-8-13@author: wanglei ''' def wordcount(line):vowelstr='aeiou'vowel=0word=0consonant=0for s in line:if s.isalpha():if s in vowelstr:vowel +=1else:consonant +=1elif s==' ':word +=1else:passprint "元音有: %d個,輔音有: %d個,單詞數為: %d"%(vowel,consonant,word+1) str=raw_input("請輸入一句話: ") wordcount(str)

測試數據:

請輸入一句話: The quick brown fox jumps over a lazy dog. 元音有: 11個,輔音有: 22個,單詞數為: 9

8–11. 文本處理. 要求輸入一個姓名列表,輸入格式是“Last Name, First Name,” 即 姓,
逗號, 名. 編寫程序處理輸入, 如果用戶輸入錯誤, 比如“First Name Last Name,” , 請糾正這
些錯誤, 并通知用戶. 同時你還需要記錄輸入錯誤次數. 當用戶輸入結束后, 給列表排序, 然后以
"姓 , 名" 的順序顯示.

解答:

?

#!/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結束輸入: ")if name=='q':breakif not ',' in name[:len(name)-1]: #判斷姓名中是否有逗號,而且逗號不能再最后一位,這個判斷條件寫得鼻
#比較簡單wrongtime
+=1print "輸入格式有誤!你已經錯誤%d次!請重新輸入!"%wrongtimecontinueelse:namelist.append(name)print "排序后的姓名列表為: "for eachname in sorted(namelist):print eachname nameprocess()

測試數據:

請輸入你的姓名,以姓,名的格式,如:張,三,按q結束輸入: li,ming
請輸入你的姓名,以姓,名的格式,如:張,三,按q結束輸入: zhang,san
請輸入你的姓名,以姓,名的格式,如:張,三,按q結束輸入: lilei,
輸入格式有誤!你已經錯誤1次!請重新輸入!
請輸入你的姓名,以姓,名的格式,如:張,三,按q結束輸入: hanmeimei
輸入格式有誤!你已經錯誤2次!請重新輸入!
請輸入你的姓名,以姓,名的格式,如:張,三,按q結束輸入: jack,cheng
請輸入你的姓名,以姓,名的格式,如:張,三,按q結束輸入: q
排序后的姓名列表為:
jack,cheng
li,ming
zhang,san

這道題最后要求的輸出比較簡單了,所以僅僅把輸入的列表排序后輸入就好了,如果有其他的要求,可以將輸入的列表

按要求進行各種分割操作,再輸出

轉載于:https://www.cnblogs.com/hello--the-world/archive/2012/08/13/2636742.html

總結

以上是生活随笔為你收集整理的《Python核心编程》第二版第八章练习题答案 第二部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。