博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Python核心编程》第二版第八章练习题答案 第二部分
阅读量:6036 次
发布时间:2019-06-20

本文共 3431 字,大约阅读时间需要 11 分钟。

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,sysdef 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 0num=input("请输入要检测的整数: ")print isperfect(num)

测试数据:

请输入要检测的整数: 61请输入要检测的整数: 1000

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 sysdef factorial(n):    result=1    while n>=1:        result *=n        n -=1    return result num=input("请输入一个整数: ")print "%d的阶乘值是: %d"%(num,factorial(num))

测试数据:

请输入一个整数: 55的阶乘值是: 120请输入一个整数: 2020的阶乘值是: 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 sysdef 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)

测试数据:

请输入一个整数: 68请输入一个整数: 934请输入一个整数: 15610

采用了递归的思路来计算斐波那契数列

 

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 eachnamenameprocess()

测试数据:

 

请输入你的姓名,以姓,名的格式,如:张,三,按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

你可能感兴趣的文章
我的友情链接
查看>>
oracle 中带双下划线的参数如(*.__shared_pool_size=)
查看>>
nginx添加系统服务
查看>>
jQuery在IE7和8下setInterval失效的问题
查看>>
谁再问我--分流好 还是 汇聚好。我拍死他!
查看>>
linux命令总结之---cat命令
查看>>
博客迁移
查看>>
我的友情链接
查看>>
cocos2d-x 向android移植问题汇总
查看>>
数据库名实例名服务名
查看>>
centos nginx 启动脚本
查看>>
我的友情链接
查看>>
准确修改虚拟机名称方法
查看>>
为什么你设定的目标最后实现往往都会打折扣?
查看>>
NGINX与APACHE工作模式的区别
查看>>
Linux安装Xcache缓存器
查看>>
谷歌:全球10大爬升最快搜索关键字排行榜 Google Zeitgeist 2011
查看>>
【一天一个shell命令】好管家--查看当前登录用户-w
查看>>
查看所有用户和用户组
查看>>
关于抵御Petya勒索病毒的最新办法
查看>>