私はPythonを学び始めたばかりで、簡単なCollatz推測プログラムはまずは楽しいプロジェクトになると思いました。アイデアは、すべてのステップを印刷し、続いて実行されたステップの総数を印刷することです。Pythonの無限ループですが、1が目標値の場合のみ
問題は、このコードが無限ループにならないようにすることはできませんが、「while x!= 1」を使用する場合にのみ問題になります。私は 'x!= 2'の間に置き換えて、それから期待通りに2で停止します。私はここで第1号がとても特別なことを理解するのに苦労しています。
ありがとうございます。
x=int(input("Enter a number: "))
steps=int(0)
while x!=1:
if x%2==0:
x=int(x/2)
steps=(steps+1)
print(x)
if x%2!=0:
x=((x*3)+1)
steps=(steps+1)
print(x)
print("Steps:",steps)
あなたは 'else'を使っているはずです。 - 開始時に' x == 2 'ならば、ループの繰り返しを通る流れを考えてください。紙に書いてください。あなたの頭の中でそれを視覚化できない場合はhttp://www.pythontutor.com/ – jonrsharpe
それはちょうど1ではなく、 'x!= 3'で置き換えてみてください。同じ動作をします。奇数を使用しているときはいつでも発生します。 – Antimony
コードが2番目の 'if'にヒットすると、最初の' if'は 'x'の値を変更し、その逆も同様です。 'x'が1のとき、 'if'sはその値を4,2,1に変更し、ループは継続する – kuro