2017-01-23 4 views
1

Ich habe versucht, eine Zufallszahl Ratespiel zu machen. Ich benutze:Python Code Schleife

def Guess(): 
    randomNumber = random.randint(1, 100) 

    found = False 

    while not found: 
     _guess = raw_input("Your Guess: ") 
     if _guess == randomNumber: 
      print "Correct!" 
      found = True 
     elif _guess > randomNumber: 
      print "Too High"  
     else: 
      print "Too Low" 

Das Problem ist, dass egal was, es druckt "zu hoch". Ich habe versucht, online nach dem Problem zu suchen, aber ich weiß nicht, wonach ich suchen soll.

Weiß jemand, was ich tun kann, um das zu beheben?

+0

Bei String- und Ganzzahl-Vergleichen wird immer die ganze Zahl kleiner zurückgegeben. – jath03

Antwort

2

Pythons raw_input() gibt Ihnen eine Zeichenfolge, nicht eine ganze Zahl, und da "42" eigentlich nicht gleich 42 ist, wird es nie richtig sein (a)

Sie müssen diese Zeichenfolge in eine ganze Zahl drehen bevor Sie vergleichen, mit so etwas wie:

_guess = int(raw_input("Your Guess: ")) 

(a) Beachten Sie, dass Python 3 Verbietet Ungleichheit für gemischten String/numerische Argumente Überprüfung bestellt, so:

"2" > 1 

einen Fehler tatsächlich erhöhen. Es erlaubt immer noch direkte Ungleichheit != und Gleichheit == überprüft, aber immer noch berücksichtigt Zeichenfolge und Numerik ungleich zu sein.