PYTHON核心编程第二第章习题答案.pdf_第1页
PYTHON核心编程第二第章习题答案.pdf_第2页
PYTHON核心编程第二第章习题答案.pdf_第3页
PYTHON核心编程第二第章习题答案.pdf_第4页
PYTHON核心编程第二第章习题答案.pdf_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8-1.条件语句。请看下边的代码: # statement A if x 0: # statement B pass elif x 0,上面哪个语句将被执行? 答案: (a)C (b)D (c)B 82. 循环. 编写一个程序, 让用户输入三个数字: (f)rom, (t)o, 和 (i)ncrement . 以 i 为步长, 从 f 计数 到 t , 包括 f 和 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 1: if num1 % count = 0: return False count -= 1 else: return True num1 = 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 L num = int(raw_input(Enter a number: ) print getfactors(num) 方法二: def getfactors(num): factors= count=num/2 while count=1: if num%count=0: factors.append(count) count-=1 factors.append(num) return factors print getfactors(20) 86. 素因子分解。 以刚才练习中的 isprime() 和 getfactors() 函数为基础编写一个函数, 它 接受一个整数作为参数, 返回该整数所有素数因子的列表. 这个过程叫做求素因子分解, 它 输出的所有因子之积应该是原来的数字. 注意列表里可能有重复的元素. 例如输入 20 , 返 回结果应该是 2, 2, 5 。 答案: def isprime(num1): count = num1 / 2 while count 1: if num1 % count = 0: return False count -= 1 else: return True def prime_factors(num): L = if isprime(num): L = 1,num else: count = num / 2 prime = 2 while prime 1: if num1 % count = 0: return False count -= 1 else: return True def getfactors(num): factors = count = num / 2 while count = 1: if num % count = 0: factors.append(count) count -= 1 return factors def isperfect(num): L = if isprime(num): return 0 else: if sum(getfactors(num) = num: return 1 else: return 0 num = int(raw_input(Enter a number: ) print isperfect(num) 88. 阶乘。一个数的阶乘被定义为从 1 到该数字所有数字的乘积。N 的阶乘简写为 N! 。 写一个函数,指定 N, 返回 N! 的值。 def factorial(num): if num = 0 or num = 1: return 1 else: product = 1 for i in range(1,num + 1): product *= i return product num = int(raw_input(Enter a number: ) print factorial(num) 89. 斐波那契数列。斐波那契数列形如 1,1,2,3,5,8,13,21,等等。也就是说,下一个值是序 列中前两个值之和。写一个函数,给定 N,返回第 N 个斐波那契数字。例如,第一个斐波那 契数字是 1,第 6 个是 8。 答案: def fibonacci(num): if num = 0: return 0 if num = 1: return 1 else: total = fibonacci(num-1) + fibonacci(num-2) return total for i in range(12): print fibonacci(i) 8-10.文本处理。统计一句话中的元音,辅音及单词(以空格分割)的个数。忽略元音和辅音的 特殊情况,如“h“,“y“,“qu“等。附加题:便携处理这些特殊情况的代码。 答案: 来自 /czd327917086/article/details/6691435 def counteng(string): words = len(string.split() string = string.upper() yuans = fus = 0 for i in string: n = ord(i) if n in xrange(65,91): if n in 65,69,73,79,85: yuans += 1 else: fus += 1 return yuans,fus,words string = raw_input(Enter a string: ) print counteng(string) 811. 文本处理。要求输入一个姓名列表,输入格式是“Last Name, First Name,” 即 姓, 逗号, 名. 编写程序处理输入, 如果用户输入错误, 比如“First Name Last Name,” , 请纠正 这些错误, 并通知用户. 同时你还需要记录输入错误次数. 当用户输入结束后, 给列表排序, 然后以“姓 , 名“ 的顺序显示. 输入输出示例(你不需要完全按照这里里例子完成): % nametrack.py Enter total number of names: 5 Please enter name 0: Smith, Joe Please enter name 1: Mary Wong Wrong format. should be Last, First. You have done this 1 time(s) already. Fixing input. Please enter name 2: Hamilton, Gerald Please enter name 3: Royce, Linda Please 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: Hamilton, Gerald Royce, Linda Salem, Winston Smith, Joe Wong, Mary 答案: nums = int(raw_input(Enter total number of names: ) print Enter name (lastname,firstname) i = 1 error = 0 names = while i =32 and 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)通过序列索引遍历.该小节的末尾我们指出后一种方法在序列很长的时候性能不佳(在我的 系统下,性能差了将近两倍83%)你认为它的原因是什么? 答案:通过序列索引遍历,首先创建一个索引列表,然后遍历索引,再然后列表通过索引取 值,多了好几个步骤 答案取自:/749867/984490/ 测试代码: import timeit nameList = Walter, Nicole, Steven, Henry, Walter, Nicole, Steven, Henry nameList *= 1000000 def inter_direct(): for eachName in nameList: #print eachName, “Lim“ i = eachName def inter_index(): for nameIndex in range(len(nameList): #print nameListnameIndex, “Lim“ #使用 print 的结果不准的 i = nameListnameIndex if _name_ = _main_: t_index = timeit.Timer(“inter_index()“, “from _main_ import inter_index“) t_direct = timeit.Timer(“inter_direct()“, “from _main_ import inter_direct“) print t_direct.timeit(10) print t_index.timei

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论