2013-10-23 57 views
0

我正在試圖製作一個程序,該程序反覆詢問用戶輸入,直到輸入爲特定類型。我的代碼:根據我的Python的理解,行循環直到輸入是特定類型

if isintance(value, int) == True 
    break 

應該結束while循環,如果是一個整數

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 

,但事實並非如此。

我的問題是:
a)如何編寫一個代碼,要求用戶輸入,直到輸入爲整數?
b)爲什麼我的代碼不工作?

+2

'input'總是返回字符串對象('str')。 – falsetru

+1

可能想要value.isdigit() – Hoopdady

+0

和' == False'永遠不會:-)。總是隻是'不是' – Hoopdady

回答

2

您的代碼不起作用的原因是因爲input()將始終返回一個字符串。這總是會導致isinstance(value, int)始終評估爲False

你可能想:

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

另外,你可能需要'value.strip()。isdigit() ' – JadedTuna

+0

當然,好點。 – Hoopdady

+0

嗯,不知道。謝謝! –

0

input總是返回一個字符串,你必須把它自己轉換爲int

試試這個片斷:

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

使用.isdigit()時,請注意,它會返回負整數假。所以isinstance(value, int)也許是更好的選擇。

我不能評論接受的答案,因爲低代表。

0

如果你要管理你應該使用負整數:

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