2017-05-05 1 views
0

Ich habe versucht, ein Zufallszahlen-Ratespiel zu programmieren, hauptsächlich weil ich mich gefragt habe, ob if/else wie goto auf meinem Casio CFX-9850G funktioniert. Ich habe die Eingänge nicht bereinigt und Fehlermeldungen erzeugt (zB um max zu niedrig zu setzen, Buchstaben anstelle von Zahlen einzugeben, mehr als maximal zu raten usw.). Mein anfängliches Problem ist, dass, während mein Code keinen Fehler erzeugt, ich die Zahl nicht erraten kann, selbst wenn ich Max auf 3 setze und 0,1,2,3,4,5 versuche. Es scheint, als hätte ich eine Schleife erstellt, und ich kann nicht herausfinden, wo. hier ist mein Code:Warum scheine ich in einer Schleife stecken zu bleiben?

import random 

print "GUESS MY NUMBER" 

max=int(raw_input("Guess number between 1 and what?")) 

randomnumber = random.randint(1,max) 


def make_guess(guess): 
    if guess == randomnumber: 
    print "Congratulations, you guessed my number!" 
    else: 
    guess=raw_input("Guess again?") 
    make_guess(guess) 

guess=int(raw_input("What is your best guess?")) 
make_guess(guess) 


print "My number was" ,randomnumber 

und erzeugt:

GUESS MY NUMBER Guess number between 1 and what? 3 What is your best guess? 0 Guess again? 1 Guess again? 2 Guess again? 3 Guess again? 4

Nun wollte ich den Code, bis eine richtige Vermutung zu Schleife, aber ich erwartete eine richtige Vermutung der if Code auslösen würde.

+0

Verschieben Sie Ihre Funktionsdefinition an den Anfang des Codes oder definieren Sie eine Hauptfunktion. Verwechseln Sie nicht Code und Funktionen auf höchster Ebene. –

+0

@VaibhavAggarwal Ich verstehe nicht. Meinst du meinen 'def make_guess' über' print "GUESS MY NUMBER"? Ich habe das versucht und es hat mein Problem nicht gelöst. – toonarmycaptain

Antwort

3

Sie haben vergessen, die Eingabe in eine Integer innerhalb Ihrer else-Klausel zu konvertieren. Es funktioniert tatsächlich, wenn Sie beim ersten Versuch raten, weil Sie die Konvertierung außerhalb des Else vornehmen.

die erste Zeile des anderen ändern:

guess=raw_input("Guess again?") 

zu

guess=int(raw_input("Guess again?")) 

und Sie sollten gut zu gehen.

Verwandte Themen