所以我正在编写一个程序,应该从用户那里输入1或2,并将输入添加到总数中,直到总数达到21.我有一个while语句确保输入是1或2但是当我测试它时无论输入什么输入它都显示1和2是不合格的答案。所以我不知道我是否错误地为我的while语句写了参数,或者我的输入是否被正确识别。
如果有人可以告诉我如何让我的代码继续运行,如果输入1或2,那么我将非常感激。谢谢。
答案 0 :(得分:2)
请记住,raw_input()的输入将是一个字符串,因此在比较时,请使用:
increase != "1"
另外我认为你实际上在寻找这个:
increase != "1" and increase != "2"
请注意,我已通过和
更改或要使用int作为输入,您可以执行以下操作:
int(raw_input("Insert number here"))
答案 1 :(得分:0)
正如user1532587所解释的:您正在将字符串与整数进行比较。这就是它。
但是,使用raw_input()是正确的方法。我不建议在Python 2.x中使用input()。
请记住,实际上不需要使用print语句和raw_input语句,您可以轻松地将它们组合在一起:
increase = raw_input("player 1: blabla while the total is {}".format(current))
.format(current)只是 - 在我看来 - 比#34更好的习惯;"%current
顺便说一下,处理输入的常用方法是使用尝试和,除了,
总而言之,它看起来像这样:
def play_twentyone():
current = 0
while current < 21:
increase = raw_input("player1: blabla the total is {}\n".format(current))
while True:
try:
if int(increase) in [1,2]: break
except ValueError: #handling the error which could occur, e.g int("five")
pass
increase = raw_input("Invalid input, please try again\n")
current += int(increase)
或者使用字符串的简单方法,而不是整数:
def play_twentyone():
current = 0
while current < 21:
increase = raw_input("player1: blabla the total is {}\n".format(current))
while increase not in ("1","2"):
increase = raw_input("Invalid input, please try again\n")
current += int(increase)
请注意:
increase not in "12"
也接受空字符串/输入 - &gt;不行