1. 程式人生 > >python實踐項目—Collatz序列

python實踐項目—Collatz序列

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序列