2014-01-13 52 views
1

我花了一個小時或更長時間在這裏尋找答案。我發現了一些有用的東西,但不要專門回答我的問題。我正在使用Python 3.3.3。我是新手,所以請溫柔。Python輸入數據類型處理

我想創建一個需要用戶輸入的程序,但是接下來我需要做一個檢查,看看輸入是什麼數據類型,然後根據該數據類型採取一定的操作過程。

除了那些在此列表中發現的任何字符串:

valid_help_string_list = ['\'help\'', '\'HELP\'', 'help', 'HELP']

應導致的打印:

「請輸入一個有效的項目」或類似的意思。

任何整數(大於0但小於500)都應該使用float()使行對齊。

任何浮點數(超過0.0但低於500.0)都是有效的。

對於這個項目,我用這將在100磅重或過500

不屬於這些類別內的所有內容也應該得到同樣的「請輸入一個有效的迴應」的錯誤消息,假設沒有着想用戶。

我覺得這對一個新手來說很簡單。該程序旨在讓您輸入您的體重,然後根據該體重創建一個象形圖,並將其全部保存在我爲它設置的.txt文件的下一個打開的行中。或者,如果您想查看象形圖的圖例,則應該可以在該列表中找到的任何變體中鍵入幫助。

任何幫助將非常感激。

回答

0

默認情況下,用戶輸入將是一個字符串,所以我們需要檢查它是否可以成爲整數或浮點數。當你想打開的整數的花車無論如何,沒有必要做任何事情複雜:

def validate_input(val, min_v=100, max_v=500): 
    try: 
     val = float(val) 
    except ValueError: 
     print("Not a valid entry") 
    else: 
     if not min_v < val <= max_v: 
      print("Value should be between {} and {}".format(min_v, max_v)) 
     else: 
      return val 
    return False 

現在,您的電話迴路可以閱讀:

while True: 
    val = input("...") 
    if val in valid_help_string_list: 
     # print help 
    else: 
     val = validate_input(val) 
     if val: 
      break 
# use val 

注意,這依賴於從validate_input正在迴歸或者是False或者大於0的數字; Python會將零回報解釋爲False而不是break,所以我建議保留min_v >= 0

+0

我試過用這個。它的工作原理並不如我預期的那樣。雖然非常接近。也許我只是沒有經驗,我不能讓它正常工作。我輸入100以下,它只是接受它,我輸入超過500,它接受它,當我輸入100-500它說數字需要在100和500之間。 –

+0

道歉,我錯過了一個關鍵的'不'。編輯。 – jonrsharpe

+0

謝謝!我爲自己感到自豪,因爲我認識到這條線是罪犯,我嘗試了很多事情,但這完全是我的想法。對此,我真的非常感激。 –