corepython第8章練習問題

10261 ワード

8-2.ループ.(f)rom,(t)o,(i)ncrementの3つの数字をユーザに入力させるプログラムを作成する.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
': 21 break 22 if nameformat(newname): 23 m+=1 24 name.append(newname) 25 else: 26 print 'wrong format...should be last,first.
\
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