python實踐項目—Collatz序列
阿新 • • 發佈:2018-11-13
format urn utf please 返回 val 簡單 highlight ror
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.‘)
python實踐項目—Collatz序列