2017-04-27 140 views
-2

第一个IF语句被忽略,我不知道什么可能导致这种情况。我检查了压痕,一切似乎fine.As你可以在它打印numberRolled代码中看到的,但是当我运行它,它甫一忽略第一个IF.`IF语句跳过 - 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'是一个整数,'userGuess'是一个字符串。 'raw_input(“猜数字\ n”)'=>'int(raw_input(“猜数字\ n”))''。你的elif也是多余的!如果不相等,它只会达到这一点。你可以使用其他的。 –

+1

如果语句被“忽略”,表示条件不成立。一行一行的运行代码,你会明白为什么 –

+0

感谢Pual鲁尼,工作。 =) –

回答

0

raw_input()返回一个字符串,但random.randint()返回int。这意味着在做userGuess == numberRolled时,您将字符串与int进行比较(返回False)。

为了解决这个问题简单地转换的变量之一,以正确的类型:

userGuess == str(numberRolled) 

看看this answer有关变量类型以及如何将它们在Python比较的更多信息。