Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
622 views
in Technique[技术] by (71.8m points)

python - Loop until an input is of a specific type

I'm trying to make a program that repeatedly asks an user for an input until the input is of a specific type. My code:

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

Based on my understanding of python, the line

if isintance(value, int) == True
    break

should end the while loop if value is an integer, but it doesn't.

My question is:
a) How would I make a code that would ask the user for an input, until the input is an integer?
b) Why doesn't my code work?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The reason your code doesn't work is because input() will always return a string. Which will always cause isinstance(value, int) to always evaluate to False.

You probably want:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...