Python &引用;如果;带有接受int&;的输入的语句;一串
Python(2.7)的新功能。我试图收集一个可以是int或string的用户输入(我假设这是可能的,尽管我不是100%确定)。当我看到我在下面发布的语句时,我输入的任何数字都会打印“无效输入”消息,并再次提示我输入用户输入,即使它在我希望的范围内。输入“q”仍能正常工作,如果输入,则返回Python &引用;如果;带有接受int&;的输入的语句;一串,python,python-2.7,if-statement,Python,Python 2.7,If Statement,Python(2.7)的新功能。我试图收集一个可以是int或string的用户输入(我假设这是可能的,尽管我不是100%确定)。当我看到我在下面发布的语句时,我输入的任何数字都会打印“无效输入”消息,并再次提示我输入用户输入,即使它在我希望的范围内。输入“q”仍能正常工作,如果输入,则返回 我已经尝试将第一个if语句改为(0如果[str(x)中的x在范围(0,9)]-这应该行得通,因为collectEyesBlade是一个字符串,所以我们需要将它与字符串进行比较您已经找到了Python的两个小怪
我已经尝试将第一个
if
语句改为(0如果[str(x)中的x在范围(0,9)]
-这应该行得通,因为collectEyesBlade
是一个字符串,所以我们需要将它与字符串进行比较您已经找到了Python的两个小怪癖。一个范围本身就是一个iterable,但是可以将一个iterable放在另一个iterable的内部
换句话说,你的声明
如果叶片处于[范围(0,9)]:
正在检查collectEyesBlade是否是列表中的一个项目,该列表中只有一个项目:范围iterable。由于您没有输入范围iterable,因此失败
你可以说
如果刀片在列表中(范围(0,9)):
这会将范围iterable转换为实际列表,或者
如果刀片在范围(0,9)内:
两者都应该做你想做的事
然而,正如另一位回答者所提到的,这只是问题的一半。如果您的输入实际上可能是整数类型,上面的内容就足够了,但您要求的是字符串输入。输入是“1”并不意味着它不是字符串输入
这里有几个选项。您可以尝试将字符串输入转换为整数,如果由于字符串无法转换为整数而失败,请继续;或者您可以将要比较的数字范围/列表转换为字符串。因为原始输入
返回一个str
,请从比较器开始ison使用另一个字符串。然后,尝试将其转换为int
。最后,如果成功,尝试整数比较
while True:
collectEyesBlade = raw_input("\nEnter desired blade number: ")
if collectEyesBlade.lower() == 'q':
return
try:
collectEyesBlade = int(collectEyesBlade)
except ValueError:
print "\nInvalid input. Enter value between 0 and 9, or 'q' to quit"
continue
if collectEyesBlade in range(0,9):
break
如果您只是在学习基础知识,那么您可能应该忽略Python 2,而将时间花在当前推荐和支持的语言版本上,即Python 3。raw\u input
返回字符串,将其转换为int
while True:
collectEyesBlade = raw_input("\nEnter desired blade number: ")
if collectEyesBlade.lower() == 'q':
return
try:
collectEyesBlade = int(collectEyesBlade)
except ValueError:
print "\nInvalid input. Enter value between 0 and 9, or 'q' to quit"
continue
if collectEyesBlade in range(0,9):
break