0
だから私はこのコードを持っている:なぜこのif文は常にTrueを返しますか?
steps = 0
biggestSteps = 0
startY = 2
y = startY
def process(x):
global steps
steps = steps + 1
if x % 2 == 0:
return x/2
else:
return (3*x)+1
while True:
y = process(y)
if y == 1 or y == 4:
if steps > biggestSteps:
biggestSteps = steps
print("Biggest number yet: " + str(startY) + ", with " + str(steps) + " steps")
startY += 1
y = startY
steps = 0
私はこのコードを実行しようとすると、
if steps > biggestSteps:
がalawysはTrueを返します、そして、それは番号ごと
print("Biggest number yet: " + str(startY) + ", with " + str(steps) + " steps")
、その意志私は確かに欲しくない。
数値が最大ステップ数に達したときにのみ印刷するようにするにはどうすればよいですか?
EDIT:
私は、whileループで
global
を追加してみました(かなり確信して、それは何も変化しない)
steps = 0
biggestSteps = 0
startY = 2
y = startY
def process(x):
global steps
steps = steps + 1
if x % 2 == 0:
return x/2
else:
return (3*x)+1
while True:
global steps
global biggestSteps
global startY
global y
y = process(y)
if y == 1 or y == 4:
if steps > biggestSteps:
biggestSteps = steps
print("Biggest number yet: " + str(startY) + ", with " + str(biggestSteps) + " steps")
startY += 1
y = startY
steps = 0
あなたはCollatz推測ビデオを見ましたか? :) – DeepSpace
おそらく、 'while'の中で' global steps'を使うつもりです。 – DeepSpace
ええ。私は実際にProcessing.pyで作業していましたが、私はそれを偶発的に閉じてしまったので、通常のPythonでやってみました。私は基本的にコピーしたコードをコピーします。それがなぜ機能しないのか分かりません。 – Zobody