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を出力する.
8-6.素因数分解さっき練習したisprime()とgetfactors()関数をベースに関数を作成し、パラメータとして整数を受け入れ、その整数のすべての素数因子のリストを返します.この過程を求素因子分解と呼び,彼が出力したすべての因子の積は元の数字であるべきである.注意リストには重複する要素がある可能性があります.たとえば、20と入力した場合、結果は[2,2,5]になるはずです.
8-11.テキスト処理.名前のリストを入力する必要があります.入力形式は「last name,first name」、すなわち姓カンマ名です.作成プログラムは入力を処理し、ユーザーが「first name last name」などのエラーを入力した場合、これらのエラーを修正し、ユーザーに通知します.入力エラーの回数も記録する必要があります.ユーザー入力が終了すると、リストをソートし、「姓、名」の順に表示します.
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