Python編程快速上手實踐項目題目,歡迎指證與優化!
- Collatz 序列
題目:
編寫一個名爲 collatz()的函數,它有一個名爲 number 的參數。如果參數是偶數,
那麼 collatz()就打印出 number // 2, 並返回該值。如果 number 是奇數, collatz()就打
印並返回 3 * number + 1。
然後編寫一個程序, 讓用戶輸入一個整數, 並不斷對這個數調用 collatz(), 直
到函數返回值1(令人驚奇的是, 這個序列對於任何整數都有效, 利用這個序列,
你遲早會得到 1! 既使數學家也不能確定爲什麼。 你的程序在研究所謂的“Collatz
序列”,它有時候被稱爲“最簡單的、 不可能的數學問題”)。
記得將 input()的返回值用 int()函數轉成一個整數,否則它會是一個字符串。
源代碼:
def collatz(number):
if number%2 == 0:
return number//2
else :
return 3*number+1
input_number = int(input("請輸入一個整數:"))
while True :
print(collatz(input_number))
input_number=collatz(input_number)
if input_number==1:
break
運行結果:
請輸入一個整數:22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
- 輸入驗證:
問題:
在前面的項目中添加 try 和 except 語句,檢測用戶是否輸入了一個非整數的字
符串。正常情況下, int()函數在傳入一個非整數字符串時,會產生 ValueError 錯誤,
比如 int('puppy')。在 except 子句中,向用戶輸出一條信息,告訴他們必須輸入一個
整數。
代碼:def collatz(number): if number%2 == 0: return number//2 else : return 3*number+1 try: input_number = int(input("請輸入一個整數:")) while True : print(collatz(input_number)) input_number=collatz(input_number) if input_number==1: break except: print ('出現錯誤!只支持輸入整數!')
結果:
請輸入一個整數:jj 出現錯誤!只支持輸入整數!