初學python,嘗試着寫一寫,僅供參考,歡迎指正!
3.11.1 Collatz 序列
編寫一個名為collatz()的函數,它有一個名為number 的參數。如果參數是偶數,那麼collatz()就列印出number // 2,并傳回該值。如果number 是奇數,collatz()就列印并傳回3 * number + 1。
然後編寫一個程式,讓使用者輸入一個整數,并不斷對這個數調用collatz(),直到函數傳回值1(令人驚奇的是,這個序列對于任何整數都有效,利用這個序列,你遲早會得到1!既使數學家也不能确定為什麼。你的程式在研究所謂的“Collatz序列”,它有時候被稱為“最簡單的、不可能的數學問題”)。
3.11.2 輸入驗證
在前面的項目中添加try 和except 語句,檢測使用者是否輸入了一個非整數的字元串。正常情況下,int()函數在傳入一個非整數字元串時,會産生ValueError 錯誤,比如int('puppy')。在except 子句中,向使用者輸出一條資訊,告訴他們必須輸入一個整數。
def collatz(number):
if number%2==0:
return number//2
else:
return 3*number+1
while True:
try:
num=int(input('輸入一個整數:'))
except ValueError:
print ('輸入的必須是一個整數')
continue
while num!=1:
num=collatz(num)
print (num)
break