《Python核心编程》第二版第八章练习题答案 第二部分
2012-08-13 17:32
127 查看
8–7. 全数. 完全数被定义为这样的数字: 它的约数(不包括它自己)之和为它本身. 例如: 6
的约数是 1, 2, 3, 因为 1 + 2 + 3 = 6 , 所以 6 被认为是一个完全数. 编写一个名为 isperfect()
的函数, 它接受一个整数作为参数, 如果这个数字是完全数, 返回 1 ; 否则返回 0 .
解答:
测试数据:
8–8. 阶乘. 一个数的阶乘被定义为从 1 到该数字所有数字的乘积. N 的阶乘简写为 N! .
写一个函数, 指定N, 返回 N! 的值.
解答:
测试数据:
8–9. Fibonacci 数列. Fibonacci 数列形如 1, 1, 2, 3, 5, 8, 13, 21, 等等. 也就是说,
下一个值是序列中前两个值之和. 写一个函数, 给定 N , 返回第 N 个 Fibonacci 数字. 例如, 第
1 个 Fibonacci 数字是 1 , 第 6 个是 8 .
解答:
测试数据:
采用了递归的思路来计算斐波那契数列
8–10. 文本处理. 统计一句话中的元音, 辅音以及单词(以空格分割)的个数. 忽略元音和
辅音的特殊情况, 如 "h", "y", "qu" 等. 附加题: 编写处理这些特殊情况的代码.
解答:
测试数据:
8–11. 文本处理. 要求输入一个姓名列表,输入格式是“Last Name, First Name,” 即 姓,
逗号, 名. 编写程序处理输入, 如果用户输入错误, 比如“First Name Last Name,” , 请纠正这
些错误, 并通知用户. 同时你还需要记录输入错误次数. 当用户输入结束后, 给列表排序, 然后以
"姓 , 名" 的顺序显示.
解答:
测试数据:
请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: li,ming
请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: zhang,san
请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: lilei,
输入格式有误!你已经错误1次!请重新输入!
请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: hanmeimei
输入格式有误!你已经错误2次!请重新输入!
请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: jack,cheng
请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: q
排序后的姓名列表为:
jack,cheng
li,ming
zhang,san
这道题最后要求的输出比较简单了,所以仅仅把输入的列表排序后输入就好了,如果有其他的要求,可以将输入的列表
按要求进行各种分割操作,再输出
的约数是 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 1 else: 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=1 while n>=1: result *=n n -=1 return 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 1 elif n==2: return 1 else: 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=0 word=0 consonant=0 for s in line: if s.isalpha(): if s in vowelstr: vowel +=1 else: consonant +=1 elif s==' ': word +=1 else: pass print "元音有: %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=0 namelist=[] while 1: name=raw_input("请输入你的姓名,以姓,名的格式,如:张,三,按q结束输入: ") if name=='q': break if not ',' in name[:len(name)-1]: #判断姓名中是否有逗号,而且逗号不能再最后一位,这个判断条件写得鼻 #比较简单 wrongtime +=1 print "输入格式有误!你已经错误%d次!请重新输入!"%wrongtime continue else: 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
这道题最后要求的输出比较简单了,所以仅仅把输入的列表排序后输入就好了,如果有其他的要求,可以将输入的列表
按要求进行各种分割操作,再输出
相关文章推荐
- 《Python核心编程》第二版第七章练习题答案 第二部分
- 《Python核心编程》第二版第八章练习题答案 第一部分
- 《Python核心编程》第二版第六章练习题答案-第二部分
- 《Python核心编程》第二版第八章练习题答案 第三部分
- 《Python核心编程》第二版第六章练习题答案-第四部分
- 《Python核心编程》第二版第六章练习题答案-第五部分
- 《Python核心编程》第二版第六章练习题答案-第六部分
- 《Python核心编程》第二版第六章练习题答案-第三部分
- <Python核心编程(第二版)>第八章练习题
- 《Python核心编程》第二版第六章练习题答案
- 《Python核心编程》第二版第209页第八章练习 续二 -Python核心编程答案-自己做的-
- Python核心编程(第二版)2.21练习题答案
- 《Python核心编程》第二版第209页第八章练习 续三 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第209页第八章练习 续一 -Python核心编程答案-自己做的-
- <Python核心编程(第二版)>第八章练习题
- python核心编程(第二版)参考答案(自制)--第八章·条件和循环
- 《Python核心编程》第二版第209页第八章练习 -Python核心编程答案-自己做的-
- 应聘Java笔试时可能出现问题及其答案(第二版 第二部分)
- 《Python核心编程》第二版第七章练习题答案 第一部分
- 《Python核心编程》第二版第405页第十三章练习 续二 -Python核心编程答案-自己做的-