《Python核心编程习题》---chapter8
来源:互联网 发布:淘宝客推广联盟被骗 编辑:程序博客网 时间:2024/06/05 07:47
#8-6"""素因子分解. 以刚才练习中的 isprime() 和 getfactors() 函数为基础编写一个函数, 它接受一个整数作为参数, 返回该整数所有素数因子的列表. 这个过程叫做求素因子分解, 它输出的所有因子之积应该是原来的数字. 注意列表里可能有重复的元素. 例如输入 20 , 返回结果应该是 [2, 2, 5] ."""def isprime(number): for i in range(2, number/2): if number % i == 0: return False return Truedef getfactors(number): nlist = [] for i in range(1, number+1): if number % i == 0: nlist.append(i) return nlistdef prime_fac(number): prime_facs = [] tmp = 0 new_number = number if isprime(new_number): #如果该数为素数,直接返回其约数 return getfactors(new_number) while(tmp != -1): if (isprime(new_number) == False): factors = getfactors(new_number)#求约数列表 #print factors for i in range(1, len(factors)):#从下标1开始,忽略列表里面的1 if(isprime(factors[i])):#判断该数是否为素数 #print factors[i] prime_facs.append(factors[i])#是就添加该数到素因子列表 new_number = new_number / factors[i] #求余,并将余数重复前面操作 #print 'number',(new_number, prime_facs) break else: prime_facs.append(new_number)#最后一个余数为素数,直接添加到素因子列表 tmp = -1 return prime_facsif __name__ == '__main__': print prime_fac(120)
#8-11'''文本处理. 要求输入一个姓名列表,输入格式是“Last Name, First Name,” 即 姓,逗号, 名. 编写程序处理输入, 如果用户输入错误, 比如“First Name Last Name,” , 请纠正这些错误, 并通知用户. 同时你还需要记录输入错误次数. 当用户输入结束后, 给列表排序, 然后以"姓 , 名" 的顺序显示.'''#判断姓名格式是否正确def name_judge(name): if name.find(',') == -1: return False else: string = name.split(',') if string[0].isalpha() & string[1].isalpha(): return True else: return Falsedef name_list(number): name_list = [] count = 1 while (count < int(number)+1): print 'Please enter name %d:'%count name = raw_input() # 判断如果名字格式符合标准,就计数+1,并把名字添加到列表 if (name_judge(name)): count = count+1 name_list.append(name) else: print 'Wrong format... should be Last, First.' print 'You have done this %d time(s) already. Fixing input...'%(count) print 'The sorted list (by last name) is:' for i in name_list: print idef main(): number = raw_input('Enter total number of names:') name_list(number)if __name__ == '__main__': main()
#8-12''' (整数)位操作. 编写一个程序, 用户给出起始和结束数字后给出一个下面这样的表格,分别显示出两个数字间所有整数的十进制, 二进制, 八进制和十六进制表示. 如果字符是可打印的ASCII 字符, 也要把它打印出来, 如果没有一个是可打印字符, 就省略掉 ASCII 那一栏的表头.'''def main(): count = 1 while (count): print 'SAMPLE OUTPUT %d'%count print '-'*15 begin_value = int(raw_input('Enter begin value: ')) end_value = int(raw_input('Enter end value: ')) if end_value < 31 or begin_value > 127: print 'DEC BIN OCT HEX' print '-' * 40 for i in range(begin_value, end_value): print'%3d %6s %3o %3x' % (i, bin(i).replace('0b', ''), i, i) else: print 'DEC BIN OCT HEX ASCII' print '-' * 40 for i in range(begin_value, end_value): if 31 < i < 127: print'%3d %6s %3o %3x %5c'%(i,bin(i).replace('0b',''),i,i,ord(chr(i))) else: print'%3d %6s %3o %3x' % (i, bin(i).replace('0b', ''), i, i)if __name__ == '__main__': main()
阅读全文
0 0
- 《Python核心编程习题》---chapter8
- 《Python核心编程习题》---chapter6
- 《Python核心编程习题》---chapter7
- 《Python核心编程习题》---chapter9
- 《Python核心编程习题》---chapte11
- Python 核心编程习题2
- python核心编程第二章习题
- python核心编程习题5-9章
- python核心编程习题11章
- Python核心编程第二章课后习题
- 《Python核心编程》第2章 习题
- 《Python核心编程》第3章 习题
- 《Python核心编程》第5章 习题
- 《Python核心编程》第二章习题解答
- 《Python 核心编程》 第三章习题 3.10
- 《Python核心编程》第6章 习题
- 《Python核心编程》第7章 习题
- 《Python核心编程》第8章 习题
- 抽象类的注意事项
- Web Sockets
- VMWare 安装 ubuntu server 16.04 (下)
- 手把手教学–ubuntu安装gogs实现自己的代码管理
- NodeJS path模块详解
- 《Python核心编程习题》---chapter8
- Set 二(TreeSet与HashSet)十五
- 人工智能: 自动寻路算法实现(一、广度优先搜索)
- VS2013使用scanf报错
- BFC详解
- 接口和抽象类的区别
- 使用Java开发高性能网站需要关注的那些事儿
- SpringMVC返回JSON数据的坑
- 集合详解