循环直到输入具有特定类型

时间:2013-10-23 13:21:54

标签: python python-3.x

我正在尝试制作一个程序,它反复询问用户输入,直到输入属于特定类型。我的代码:

value = input("Please enter the value")

while isinstance(value, int) == False:
     print ("Invalid value.")
     value = input("Please enter the value")
     if isinstance(value, int) == True:
         break

根据我对python的理解,行

if isintance(value, int) == True
    break
如果是一个整数,

应该结束while循环,但它不会。

我的问题是:
a)如果输入是整数,我将如何制作一个要求用户输入的代码?
b)为什么我的代码不起作用?

4 个答案:

答案 0 :(得分:2)

您的代码不起作用的原因是因为input()将始终返回一个字符串。这始终会导致isinstance(value, int)始终评估为False

你可能想要:

value = ''
while not value.strip().isdigit():
     value = input("Please enter the value")

答案 1 :(得分:0)

input始终返回一个字符串,您必须自己将其转换为int

试试这个代码段:

while True:
    try:
        value = int(input("Please enter the value: "))
    except ValueError:
        print ("Invalid value.")
    else:
        break

答案 2 :(得分:0)

使用.isdigit()时要注意,它会在负整数上返回False。所以isinstance(value, int)可能是更好的选择。

由于低代表,我无法对接受的答案发表评论。

答案 3 :(得分:0)

如果您想管理负整数,您应该使用:

value = ''
while not value.strip().lstrip("-").isdigit():
    value = input("Please enter the value")