2016-04-02 8 views
-2

Ich habe 2 Fragen zu meinem Code. Warum das Programm nicht in die zweite if Anweisung geht. Wie kann ich die Schleife beenden?Wie Debugger Anfänger Code

from random import * 

SecretNumber=randint(1,5) 
Guess=int(input("Please enter Guess: ")) 
NumberofGuesses=1 
SecretNumber=0 

while Guess != SecretNumber: 
    NumberofGuesses=NumberofGuesses+1 
    if Guess>SecretNumber: 
     print("Please insert a smaller number") 
    else: 
     print("Please insert a bigger number") 

    if Guess==SecretNumber: 
     print("Number of Guesses: {0}".format(NumberofGuesses)) 
+0

formatieren Sie den Code richtig. – snakecharmerb

+0

Um Ihre Titelfrage zu beantworten: Wie Debugger Anfänger-Code: Gehen Sie durch den Code von Hand. Fügen Sie ggf. Ausdrucke hinzu (oder importieren Sie oben pdb; pdb.set_trace(), damit Sie den Code Schritt für Schritt durchgehen und die Werte überprüfen können, die Sie erwarten). Unter anderem sollten Sie hoffentlich sehen, dass Sie die Rate nur einmal ändern (außerhalb der Schleife) – Foon

+0

[Wie kleine Programme zu debuggen sind] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs /). –

Antwort

1

Es ist weil Sie SecretNumber auf 0 setzen. Entfernen Sie es und es sollte funktionieren.

4

Ihre zweite if ist außerhalb der while Schleife, so wird es nicht getroffen werden, bis Sie die geheime Zahl erraten. Die Schleife endet nie, weil Sie nie wieder eine Schätzung gelesen haben.

Sie haben auch ein Problem, dass Sie Ihre zufällige Geheimzahl mit Null überschreiben.

Sie brauchen so etwas wie:

import random 
SecretNumber=random.randint(1,5) 

NumberofGuesses=0 

while true: 
    Guess=int(input("Please enter Guess: ")) 
    NumberofGuesses += 1 

    if Guess == SecretNumber: 
     break # Got it! 
    elif Guess>SecretNumber: 
     print("Please insert a smaller number") 
    else: 
     print("Please insert a bigger number") 

print("Number of Guesses: {0}".format(NumberofGuesses))