《Python核心编程》第八章练习解析
来源:互联网 发布:money for mac 破解版 编辑:程序博客网 时间:2024/06/10 07:45
第八章
第一题:
条件语句。请看那下边的代码:
#statement Aif x > 0: #statement B passelif x < 0: #statement C pass else: #statement D pass#statement E(a) 如果x<0,上面的哪个语句(A,B,C,D,E)将被执行?
statement C
(b) 如果x==0,上面哪个语句居于将被执行?
statement D
(c) 如果x>0,上面哪个语句将被执行?
statement B
第二题:
循环。编写一个程序,让用户输入3个数字:(f)rom,(t)o 和 (i)ncrement。以i为步长,从f计数到t,包括f和t。例如,如果输入的是f==2、t==26、i==4,程序将输出2,6,10,14,18,22,26。
#-*- coding:utf-8 -*-#2015-04-06def xunhuan(f,t,i): while f <= t: print f, f += i if __name__=='__main__': num = map(int,raw_input('Please input date:').split()) xunhuan(num[0],num[1],num[2])
第三题:
range()。如果我们需要生成下面的这些列表,分别需要在range()内建函数提供哪些参数?
(a) [0,1,2,3,4,5,6,7,8,9]
range(10)
(b) [3,6,9,12,15,18]
range(3,20,3)
(c) [-20,200,420,640,860]
range(-20,900,220)
第四题:
素数。我们在本章已经给出了一些代码来确定一个数的最大约数或者他是否是一个素数。请把相关的代码转换成一个返回值为布尔值的函数,函数名为isprime()。如果输入是一个素数,那么返回True,否则返回False。
def isprime(num): for i in range(2,num): if num % i==0: return False else: return True
第五题:
约数。完成一个名为getfactors()的函数。他接受一个整形作为参数,返回他所有的约数的列表,包括1和他本身。
def getfactors(num): mylist = [] for i in range(1,num+1): if num % i==0: mylist.append(i) return mylist
第六题:
素因子分解。以刚才的练习中的isprime()和getfactors()函数为基础编写一个函数,他接受一个整形作为参数,返回该整形的所有素数因子的列表。这个过程叫做素因子分解,他输出的所有因子应该是原来的数字。注意列表里可能有重复的元素。例如输入20,返回结果应该是[2,2,5]。
#-*- coding:utf-8 -*-#2015-04-06def isprime(num): for i in range(2,num): if num % i==0: return False else: return Truedef getfactors(num): mylist = [] while not isprime(num): for i in range(2,num+1): if num % i==0: if isprime(i): mylist.append(i) num = num/i break else: mylist.append(num) return mylist if __name__=='__main__': num = input('Please input a number:') print getfactors(num)
第七题:
完全数。完全数被定义成这样的样数字:它的约数(不包括它自己)之和为他本身。例如:6的约数是1,2,3,因为1+2+3=6,所以6被认为是一个完全数。编写一个名为isperfect()的函数,他接受一个整形作为参数,如果这个数字是完全数,返回1:否则返回0。
#-*- coding:utf-8 -*-#2015-04-07def getfactors(num): mylist = [] for i in range(1,num): if num % i==0: mylist.append(i) return mylistdef isperfect(num): mylist = getfactors(num) if sum(mylist)==num: return 1 else: return 0 if __name__=='__main__': num = input('Please input a number:') print isperfect(num)
第八题:
阶乘。一个数的阶乘被定义为从1到该数字所有数字的积。N的阶乘简写为N!。N!==factorial(N)==1*2.....*N,so 4!==1*2*3*4。写一个函数,指定N,返回N!的值。
def NNN(num): temp = 1 for i in range(1,num+1): temp = temp*i return temp
第九题:
斐波那契数列。斐波那契数列形如1,1,2,3,5,8,13,21,等等。也就是说下一个值是前两个值得和。写一个函数,给定N,返回第N个斐波那契数字。例如,第1个斐波那契数字是1,第6个是8.
def NNN(num): a = 1 b = 1 c = 2 if num==1 or num==2 : return 1 else: for i in range(3,num): a = b + c (a,c)=(c,a) (b,a)=(a,b) return c
第十题:
文本处理。统计一句话中的元音,辅音及单词个数,忽略元音和辅音的特殊情况。附加题:编写处理这些特殊情况的代码。
#-*- coding:utf-8 -*-#2015-04-07def count(mystring): YY = 0 FY = 0 key = 0 for i in mystring: if i=='a' or i=='e' or i=='i' or i=='o' or i=='u': YY += 1 elif i!=' ': FY += 1 key = len(mystring.split()) return [YY,FY,key] if __name__=='__main__': num = raw_input('Please input a number:') print '元音数量为:',count(num)[0] print '辅音数量为:',count(num)[1] print '单词数量为:',count(num)[2]
第十一题:
#-*- coding:utf-8 -*-#2015-04-07def name(num): count = 0 result = [] for i in range(num): print 'Please enter name %d:' % i, n_ame = raw_input() if ',' in n_ame: result.append(n_ame) else: count += 1 print 'Wrong format...should be Last,First.' print 'You have done this %d time(s) already.Fixing input...' % count n_ame = n_ame.split() #print n_ame result.append(n_ame[1]+','+n_ame[0]) return sorted(result) if __name__=='__main__': num = input('Enter total number of names:') n_ame = name(num) for i in n_ame: print i
第十二题:
(整形)位操作。编写一个程序,用户给出起始和结束数字后给出一个下面的表格,分别显示两个数字间的十进制、二进制、八进制和十六进制。如果字符是可打印的ASCII字符,也要打印出来,如果没有一个是可打印的就省略ASCII那一栏的表头。
#-*- coding:utf-8 -*-#2015-04-07def output(start,end): if start >=33 or end <= 126: print '%-10s%-10s%-10s%-10s%-10s' % ('DEC','BIN','OCT','HEX','ASCII') print '---------------------------------------------' else: print '%-10s%-10s%-10s%-10s' % ('DEC','BIN','OCT','HEX') print '---------------------------' for i in range(start,end+1): if start >=33 or end <= 126: print '%-10d%-10s%-10s%-10s' % (i,bin(i),oct(i),hex(i)), if i >=33 and i<=126: print '%-10s' % chr(i) else: print '%-10s' % ' ' else: print '%-10d%-10s%-10s%-10s' % (i,bin(i)[2:],oct(i)[1:],hex(i)[2:],) if __name__=='__main__': start = input('Please input start number:') end = input('Please input end number:') output(start, end)
运行结果:
Please input start number:9Please input end number:18DEC BIN OCT HEX --------------------------------9 0b1001 011 0x9 10 0b1010 012 0xa 11 0b1011 013 0xb 12 0b1100 014 0xc 13 0b1101 015 0xd 14 0b1110 016 0xe 15 0b1111 017 0xf 16 0b10000 020 0x10 17 0b10001 021 0x11 18 0b10010 022 0x12
Please input start number:26Please input end number:41DEC BIN OCT HEX ASCII ---------------------------------------------26 0b11010 032 0x1a 27 0b11011 033 0x1b 28 0b11100 034 0x1c 29 0b11101 035 0x1d 30 0b11110 036 0x1e 31 0b11111 037 0x1f 32 0b100000 040 0x20 33 0b100001 041 0x21 ! 34 0b100010 042 0x22 " 35 0b100011 043 0x23 # 36 0b100100 044 0x24 $ 37 0b100101 045 0x25 % 38 0b100110 046 0x26 & 39 0b100111 047 0x27 ' 40 0b101000 050 0x28 ( 41 0b101001 051 0x29 )
第十三题
程序执行性能。在8.5.2节里,我们介绍了两种基本的迭代序列方法:(1)通过序列项,以及(2)通过序列索引遍历。该小节的末尾我们指出后一种方法在序列很长的时候性能不佳,你认为它的原因是什么?
答:略。
- 《Python核心编程》第八章练习解析
- 《python核心编程第二版》第八章练习解析
- python核心编程--第八章 8.15 练习
- Python核心编程 练习 第八章
- Python核心编程 第八章练习
- python核心编程第八章练习
- 《Python核心编程》第二章练习解析
- 《Python核心编程》第三章练习解析
- 《Python核心编程》第四章练习解析
- 《Python核心编程》第五章练习解析
- 《Python核心编程》第六章练习解析
- 《Python核心编程》第七章练习解析
- Python核心编程 第八章
- 《python核心编程》第八章
- 《python核心编程第二版》第二章练习答案解析
- 《python核心编程第二版》第四章练习解析
- 《python核心编程第二版》第五章练习解析
- 《python核心编程第二版》第六章练习解析
- C++ 简单实现压栈出栈
- First calibration example - Corner extraction, calibration, additional tools (二)
- Reverse Rot Contest2073 - 湖南多校对抗赛(2015.04.06)G
- 稀疏的好處
- First calibration example - Corner extraction, calibration, additional tools(一)
- 《Python核心编程》第八章练习解析
- 网购秒杀系统的设计
- 17243 Huzi酱和他的俄罗斯套娃[C]
- Qt——qmake -query信息的由来
- sql(oracle) 查询树 记录
- OC学习之道:数据结构中几种常见的排序算法:选择排序,插入排序.快速排序
- 6.6.2 Java8中接口的定义
- 解决Ubuntu系统启动网络连接超时的问题
- 【leetcode】Balanced Binary Tree