1. 程式人生 > >python實踐專案—Collatz序列

python實踐專案—Collatz序列

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.')