0

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?

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 に答える
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 に答える
0

負の整数を管理したい場合は、次を使用する必要があります。

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