corepython第八章习题

8-2.循环。编写一个程序,让用户输入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。
1 def xh():
2     f=int(raw_input('from:'))
3     t=int(raw_input('to:'))
4     i=int(raw_input('increment:'))
5     #下面这个表达式用到了列表解析
6     print [f+i*x for x in range((t-f)/i)]+[t]
8-6.素因子分解。以刚才练习中的isprime()和getfactors()函数作为基础编写一个函数,他接受一个整型作为参数,返回该整型所有素数因子的列表。这个过程叫做求素因子分解,他输出的所有因子之积应该是原来的数字。注意列表可能有重复的元素。例如输入20,返回结果应该为[2,2,5]。
 1 #8-4判定是否为质数
 2 def isprime(n):
 3     c=n/2
 4     while c>1:
 5         if n%c==0:
 6             return False
 7             break
 8         c-=1
 9     else:
10         return True
11 
12 #8-5求整除因子
13 def getfactors(n):
14     return [i for i in range(1,n+1) if n%i==0]
15 
16 #8-6
17 def PrimeFactors(n):
18     #定义质数因子程序
19     def prime(n):
20         return [i for i in getfactors(n) if isprime(i) and i>1]
21     result=prime(n)
22     #余数不等于1,则继续求质数因子,并添加到result序列
23     while True:
24         cj=1
25         for i in jg:
26             cj*=i
27         ys=n/cj
28         if ys!= 1:
29             result += prime(ys)
30         else:
31             break
32     return sorted(jg)
8-11.文本处理。要求输入一个姓名列表,输入格式是"last name,first name"即姓 逗号 名。编写程序处理输入,如果用户输入错误,比如'first name last name',请纠正这些错误,并通知用户。同时你还需要记录输入错误次数。当用户输入结束后,给列表排序,然后以”姓,名“的顺序显示。
 1 def nametrack():
 2     #定义判定名字格式是否正确的函数
 3     def nameformat(name):
 4         name_split=name.split(',')
 5         name_strip=name.split(' ')
 6         #如果用逗号分解字符串得到的列表长度为二,而且没有空格,则符合格式
 7         if len(name_split)==2 and len(name_strip)==1:
 8             return True
 9         else:
10             return False
11         
12     name=[]
13     #定义正确和错误的名字计数
14     m=1
15     n=1
16     while True:
17         ts='please enter name %d :' % m
18         newname=raw_input(ts)
19         #如果回车则停止输入
20         if newname in '\r\n':
21             break
22         if nameformat(newname):
23             m+=1
24             name.append(newname)
25         else:
26             print 'wrong format...should be last,first.\n\
27 you have done this %d times already.fixing input...' % n
28             n+=1
29     result=sorted(name)
30     print 'the sorted list (by last name) is:'
31     for eachname in result:
32         print eachname
posted @ 2015-04-20 15:49  alvy  阅读(498)  评论(0编辑  收藏  举报