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

你可能感兴趣的:(python)