2017-04-27 2 views
-2

Die erste IF-Anweisung wird ignoriert und ich habe keine Ahnung, was das verursachen könnte. Ich überprüfte die Vertiefung und alles scheint fine.As Sie den Code sehen kann numberRolled druckt, aber wenn ich laufen sie es justs ignoriert die erste IF.`IF-Anweisung übersprungen-Python 2.7

import random 
numberRolled = random.randint(1,6) 
print numberRolled 
while True: 
    userGuess = raw_input("Guess a number\n") 
    if userGuess == numberRolled: 
     print "You got it right!" 
     quitYN = raw_input("Would you like to play again?\n").lower() 
     if quitYN == "yes": 
      continue 
     else: 
      break 
    elif userGuess != numberRolled: 
     print "Wrong!"` 
+5

'numberRolled' ist eine ganze Zahl,' userGuess' ist eine Zeichenkette. 'raw_input (" Errate eine Zahl \ n ")' => 'int (raw_input (" Rate eine Zahl \ n "))' '. Auch dein elif ist überflüssig! Es wird nur zu diesem Punkt kommen, wenn sie nicht gleich sind. Sie können einfach nur anders verwenden. –

+1

Wenn if-Anweisungen "ignoriert" werden, bedeutet dies, dass die Bedingung nicht wahr ist. Führen Sie den Code Zeile für Zeile und Sie würden sehen, warum –

+0

Dankual Rooney, das funktionierte. =) –

Antwort

0

raw_input() gibt einen String, aber random.randint() kehrt ein int. Das bedeutet, dass Sie bei userGuess == numberRolled einen String mit einem int vergleichen (der False zurückgibt).

Um dies zu beheben einfach eine der Variablen in den richtigen Typ umwandeln:

userGuess == str(numberRolled) 

Werfen Sie einen Blick auf this answer für weitere Informationen über Variablen-Typen und wie sie in Python zu vergleichen.