編寫乙個名為collatz()的函式,它有乙個名為number的引數:
如果引數是偶數,那麼collatz()就列印出number//2,並返回該值;
如果number是奇數,那麼collatz()就列印,並返回3*number+1。
然後編寫乙個程式,讓使用者輸入乙個整數,並不斷對這個數呼叫,collatz(),直到函式返回值1(讓人驚奇的是,這個序列對於任何整數都有效,利用這個序列,你遲早會得到1!奇數數學家也不能確定為什麼。你的程式在研究所謂的「collatz序列」,它有時候被稱為「最簡單的、不可能的數學問題」)。
注意:記得將input()的返回值用int()函式轉成乙個整數,否則它會是乙個字串。
這個程式的輸出看起來應該像這樣:
enter number: 3
3 10
5 16
8 4
2 1
我的程式如下:
#改進**如下:-*- coding:utf-8 -*-
defcollatz(number):
if number % 2 ==0:
return number//2
elif number % 2 == 1:
return number*3+1
else
:
print('
error')
while
true:
keyinput =int(input())
getnum =collatz(keyinput)
(getnum)
if getnum == 1:
break
#-*- coding:utf-8 -*-
defcollatz(number):
if number % 2 ==0:
return number//2
elif number % 2 == 1:
return number*3+1
else
:
print('
error')
while
true:
try:
keyinput =int(input())
getnum =collatz(keyinput)
(getnum)
if getnum == 1:
break
except
valueerror:
print('
you must input a int number
')
執行結果如下:
但有一點,不對的地方是collatz 序列是輸入乙個任意的整數,讓計算機去預設執行,不再輸入,知道出現1執行結束。
所以看到網上的人的做法,對我的**進行改進之後。
改進**如下:
import sys
def collatz(number):
print(number)
if number == 1:
sys.exit()
elif number % 2 == 1 :
t=number*3+1
collatz(t)
else:
t=number//2
collatz(t)
if __name__=='__main__':
n=input('enter number: ')
try:
n=int(n)
collatz(n)
except valueerror as verror:
print('valueerror: you need input digital.') (注:此處**是借鑑他人**。)
Python學習筆記 Collatz 序列
python學習筆記 collatz 序列 編寫乙個名為 collatz 的函式,它有乙個名為 number 的引數。如果引數是偶數,那麼 collatz 就列印出 number 2,並返回該值。如果 number 是奇數,collatz 就打 印並返回 3 number 1。然後編寫乙個程式,讓使...
python學習 練習 Collatz 序列
根據自己的理解,編寫程式,如有不規範的python程式設計書寫,請多多指教 編寫名為collatz 的函式,有乙個名為number的引數。如果引數是偶數,那麼collatz 就列印出number 2,並返回該值。若果是奇數,就列印並返回3 number 1.編寫程式 使用者輸入乙個整數,並不斷對這個...
python實踐專案一 Collatz函式
要求1 編寫乙個名為 collatz 的函式,它有乙個名為 number 的引數。如果引數是偶數,那麼 collatz 就列印出 number 2,並返回該值。如果 number 是奇數,collatz 就列印並返回 3 number 1。然後編寫乙個程式,讓使用者輸入乙個整數,並不斷對這個數呼叫 ...