8–4. 素數.咱們在本章已經給出了一些代碼來肯定一個數字的最大約數或者它是不是一個
素數. 請把相關代碼轉換爲一個返回值爲布爾值的函數,函數名爲isprime() . 若是輸入的是一個
素數, 那麼返回 True , 不然返回 False .
def isprime(num):
prime=num/2
while prime>1:
ifnum%prime==0:
return False
break
prime=prime-1
else:
returnTrue
if __name__=='__main__':
while True:
num=raw_input('please input number(q to quit):')
ifnum[0].lower()=='q':
break
else:
a=isprime(int(num))
print a
8–5. 約數. 完成一個名爲 getfactors() 的函數.它接受一個整數做爲參數, 返回它全部
約數的列表, 包括 1 和它自己,
def getfactors(num):
a=[x for x in range(1,(num/2+1)) ifnum%x==0]
a.append(num)
return a
num=int(raw_input('pleaseinput:'))
a=getfactors(num)
print a
8–6. 素因子分解. 以剛纔練習中的 isprime() 和getfactors() 函數爲基礎編寫一個函
數, 它接受一個整數做爲參數, 返回該整數全部素數因子的列表.這個過程叫作求素因子分解, 它
輸出的全部因子之積應該是原來的數字. 注意列表裏可能有重複的元素.例如輸入 20 , 返回結果
應該是 [2, 2, 5] .
CODE:這個code有問題,待修改
def getfactors(num):
a=[x for x in range(1,(num/2+1)) ifnum%x==0]
return a
def isprime(num):
prime=num/2
while prime>1:
ifnum%prime==0:
g=getfactors(num)
return g
break
prime=prime-1
else:
return[1,num]
if __name__=='__main__':
while True:
num=raw_input('please input:')
ifnum[0].lower()=='q':
break
else:
a=isprime(int(num))
print a
8–8. 階乘. 一個數的階乘被定義爲從 1 到該數字全部數字的乘積.N 的階乘簡寫爲 N! .
寫一個函數, 指定N, 返回 N! 的值.
code:
def factorial(N):
a=1
for i in range(1,N+1):
a=a*i
return a
if __name__=='__main__':
while True:
n=raw_input('please input numbers(q to quit):')
ifn[0].lower()=='q':
break
B=factorial(int(n))
printB
8–10. 文本處理. 統計一句話中的元音,輔音以及單詞(以空格分割)的個數. 忽略元音和
輔音的特殊狀況, 如 "h", "y", "qu" 等. 附加題:編寫處理這些特殊狀況的代碼.