So habe ich diesen Code:Warum gibt diese if-Anweisung immer True zurück?
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
Wenn ich versuche, diesen Code auszuführen,
if steps > biggestSteps:
wird alawys true zurück, und es wird
print("Biggest number yet: " + str(startY) + ", with " + str(steps) + " steps")
, für jede Zahl, die Ich will ganz bestimmt nicht.
Wie mache ich es, so dass es nur druckt, wenn eine Zahl mit einer höchsten Anzahl von Schritten erreicht hat?
EDIT:
ich versucht, indem
global
in der while-Schleife (ziemlich sicher, es ändert sich nichts)
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
Sie haben dieses Video von Collatz Conjecture gesehen, nicht wahr? :) – DeepSpace
Sie wollten wahrscheinlich 'globale Schritte' innerhalb der' while' auch verwenden – DeepSpace
Yeah. Ich hatte es tatsächlich in Processing.py, aber ich habe es versehentlich geschlossen, also habe ich versucht, es in regulären Python zu tun. Ich kopiere grundsätzlich Code. Keine Ahnung warum funktioniert das nicht? – Zobody