Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;如果;带有接受int&;的输入的语句;一串_Python_Python 2.7_If Statement - Fatal编程技术网

Python &引用;如果;带有接受int&;的输入的语句;一串

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的两个小怪

Python(2.7)的新功能。我试图收集一个可以是int或string的用户输入(我假设这是可能的,尽管我不是100%确定)。当我看到我在下面发布的语句时,我输入的任何数字都会打印“无效输入”消息,并再次提示我输入用户输入,即使它在我希望的范围内。输入“q”仍能正常工作,如果输入,则返回


我已经尝试将第一个
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