我正在尝试制作一个程序,它反复询问用户输入,直到输入属于特定类型。我的代码:
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)为什么我的代码不起作用?
答案 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")