2017-02-23 76 views
0

我需要在python中創建一個更改計算器,並且我想讓用戶無法輸入字母或符號,我嘗試了很多東西,讓它工作。我使用了一個while循環來阻止用戶輸入0.01以下的任何內容,因此它必須可以對字母進行操作。如何讓用戶不能輸入任何非數字字符

given = float(input("How much money was given?\n"))#Asks for the amount of money given 
while given < 0.01:#Prevents any digits 0 or lower from being inputted 
    print("That is not a valid amount") 
    given = float(input("How much money was given?\n")) 
    if given > 0.01: 
     break 
while True:#Prevents anything not a digit from being inputted 
     print("That is not a valid option") 
while given.isalpha():#Prevents anything not a digit from being inputted 
     print("That is not a number") 
     given = float(input("How much money was given?\n")) 

錯誤消息說,它不能改變串到整數/浮動

一些其他位不工作,因爲我是從網上嘗試不同的事情,但我特別需要與i位被問及幫助。再次感謝

+2

[詢問用戶輸入的,直到他們得到一個有效的響應]的可能的複製(http://stackoverflow.com/questions/23294658/asking-the-用戶輸入,直到他們給一個有效的迴應) – jonrsharpe

+1

你可以發佈你已經嘗試過,爲什麼它不工作? – Aaron

回答

0

的問題是,你是對的,在開始你的輸入轉換爲浮動。如果輸入是字符串,並且因此無法轉換爲浮點數,則會出現錯誤。

此外,你需要重新安排你的代碼一點點。這是一個超級簡單的例子,你所有的條件:

while True: 

    given = input("How much money was given?\n") 
    #Asks for the amount of money given 

    if any(c.isalpha() for c in given): 
     # make sure to check each letter 
     print("Not a number") 
    elif float(given) < 0.01: 
     print("Enter number greater than 0.01") 
    elif float(given) > 0.01: 
     break 
+0

是的,我決定現在使用float,因爲它更精確,謝謝你的幫助 –

0

使用它來測試一個數字。如果事物不是數字,那麼使用int(thing)會拋出一個ValueError。

try: 
    given = int(input("Enter a number: ")) 
except ValueError: 
    print("Not a number") 
0

如果你真的想只允許數字0-9:

user_input = input('Enter some digits: ') 
print(all(c.isdigit() for c in user_input)) 
相關問題