0

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

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

如果value是整数,则应该结束 while 循环,但事实并非如此。

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

4

4 回答 4

2

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

你可能想要:

value = ''
while not value.strip().isdigit():
     value = input("Please enter the value")
于 2013-10-23T13:26:01.767 回答
1

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

由于代表人数少,我无法评论已接受的答案。

于 2013-10-23T14:11:33.460 回答
0

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

value = ''
while not value.strip().lstrip("-").isdigit():
    value = input("Please enter the value")
于 2013-10-23T14:32:28.507 回答
0

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

试试这个片段:

while True:
    try:
        value = int(input("Please enter the value: "))
    except ValueError:
        print ("Invalid value.")
    else:
        break
于 2013-10-23T13:30:03.207 回答