python實踐專案—Collatz序列
阿新 • • 發佈:2018-11-12
Collatz序列題意說明
編寫一個名為collatz()的函式,它有一個名為number 的引數。如果引數是偶數,那麼collatz()就打印出number // 2,並返回該值。如果number 是奇數,collatz()就列印並返回3 * number + 1。 然後編寫一個程式,讓使用者輸入一個整數,並不斷對這個數呼叫collatz(),直到函式返回值1(令人驚奇的是,這個序列對於任何整數都有效,利用這個序列,你遲早會得到1!既使數學家也不能確定為什麼。你的程式在研究所謂的
“Collatz序列”,它有時候被稱為“最簡單的、不可能的數學問題”)。
Collatz序列具體實現程式碼
#-*- conding: utf8 -*- ############################################ #author:wolf_dreams #time:2018-11-12 #blog:https://www.cnblogs.com/Wolf-Dreams/ ############################################ def collatz(number): if number % 2 == 0: return number // 2 elif number % 2 == 1: return 3 * number + 1 try: print('Enter number:') input_Number = int(input()) while True: input_Number=collatz(input_Number) print(input_Number) if input_Number == 1: break except ValueError: print('Input format is incorrect,please enter an integer.')
Collatz序列指令碼執行結果:
Enter number: 54 27 82 41 124 62 31 94 47 142 71 214 107 322 161 484 242 121 364 182 91 274 137 412 206 103 310 155 466 233 700 350 175 526 263 790 395 1186 593 1780 890 445 1336 668 334 167 502 251 754 377 1132 566 283 850 425 1276 638 319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
Collatz序列提示說明:
str()與int()轉換說明: input()的返回值為str字串型,需要使用int()函式將其轉成一個整數,否則程式在執行的時候會報錯 奇數和偶數如何判斷說明: 如果number % 2 == 0,則整數number就是偶數;如果number % 2 == 1,則整數number就是奇數
Collatz序列輸入驗證:
在前面Collatz序列的專案中新增try 和except 語句,檢測使用者是否輸入了一個非整數的字串。正常情況下,int()函式在傳入一個非整數字符串時,會產生ValueError 錯誤,比如int('puppy')。在except 子句中,向用戶輸出一條資訊,
告訴他們必須輸入一個整數。
Collatz序列輸入驗證具體實現程式碼:
try: print('Enter number:') input_Number = int(input()) while True: input_Number=collatz(input_Number) print(input_Number) if input_Number == 1: break except ValueError: print('Input format is incorrect,please enter an integer.')