私は、Pythonで退屈なものを自動化する第3章の練習プロジェクトを使用してCollatzシーケンスプログラムを書いています。Collatzシーケンスは4で終了する
プログラムの概要は次のとおりです。
は
number
という名前のパラメータを持っていcollatz()
という名前の関数を記述します。
number
が偶数の場合、collatz()
はnumber // 2
を出力し、 をこの値に戻す必要があります。number
が奇数の場合、collatz()
が印刷され、3 * number + 1
が返されます。は次に整数でユーザータイプをすることができますプログラムを書いて、その 機能は 値
1
を返すまで、その数にcollatz()
を呼び出し続けます。
私のコードは、しかし、それは私が、出力が1過去のバック4.
出力例に戻り、これまでにしようとしているすべての番号には4ではなく1で停止し動作します:私は
6,3,10,5,16,8,4,2,1,4
pythonに3.4.2
def collatz(number):
if number % 2 == 0:
number = number //2
print(number)
return number
elif number % 2 == 1:
number = 3 * number + 1
print(number)
return number
print ("pick a number:")
while True:
try:
number = int(input())
while number != 1:
number = collatz(number)
collatz(number)
break
except ValueError:
print("Error: Please enter a valid integer")
print("Magic! You are down to 1.")
'collatzの(数)' '再びwhile'ループの外。 「1」は奇数であり、「3 * 1 + 1 == 4」 – jonrsharpe