我正在学习python的初学者计划。我正在努力寻找更好的方法来使用" if"有多种可能性的陈述。我正在编写一个基于文本的基本游戏,用户可以选择三种不同的难度级别:Easy,Medium,Hard。我只是想编写一个代码,它接受1,2或3来告诉程序运行哪个级别。我想确保用户输入是其中一个选项,而不是" 4"或者"一个"。
以下是我写的相关代码:
selected_level = 0
selected_level = raw_input("\n Please select a level by entering 1, 2, or 3 : ")
print selected_level
if selected_level == 1 or selected_level == 2 or selected_level == 3:
print "Pass"
else:
print "Fail"
break
我现在要做的就是测试" if"声明有效。但是,无论我输入什么输入,它都会打印输入然后打印"失败"这告诉我它永远不会进入&#34的第一部分;如果"言。
我尝试使用输入1,2,3,4,等等测试它,它总是跳到"否则"声明。是否有更好的方法来编写" if"带有多个或值的语句?
答案 0 :(得分:4)
您的问题是raw_input返回一个字符串,但if语句与int进行比较。
“1”不等于1。
尝试检查if selected_level == "1" ... "2"... etc.
,它应该有用。
我会将字符串与字符串进行比较,而不是将输入转换为int,因为如果用户键入了意外的内容,则会导致程序崩溃。
还有一个更简洁的检查:
if selected_level in ("1", "2", "3"):
print "Pass"
答案 1 :(得分:1)
raw_input
返回一个字符串。试试int(raw_input(...))
答案 2 :(得分:0)
它一直跳到if语句的原因是因为它将你输入的字符串与数字1,2等比较而不是字符串值1和2.如果你想取数值您可以执行以下操作的输入:
selected_level = int(raw_input("\n Please select a level by entering 1, 2, or 3 : "))
这将采用用户输入的整数值。
答案 3 :(得分:0)
raw_input
(在Python 2.x中)返回str
。因此selected_level
是str
,而非int
。在比较int
值
selected_level = 0
selected_level = int(input("\n Please select a level by entering 1, 2, or 3 : "))
print selected_level
if selected_level == 1 or selected_level == 2 or selected_level == 3:
print "Pass"
else:
print "Fail"
break