2014-05-06 129 views
0

我是新手編程,並試圖使用戶輸入接受整數和字符串。我已經嘗試了以下編碼..但不知道我錯了哪裏。有什麼建議麼?用戶輸入接受str和int(python)

noAdults = input("Please enter the number of adults:") 
    while noAdults.isalpha(): 
     print("Number must be valid and >= 0") 
    if noAdults.isdigit() and noAdults < 0: 
     print("Error") 
     noAdults = input("Please enter the number of adults:") 

ValueError異常:無效字面對於int()與基體10:

我猜測有一個ValueError因爲我已經使用了可變noAdults與因而isalpha並且因爲它是在一個int正在錯誤?

+0

一個完全工作的版本,目前的代碼不會如果它有一個字母,再次檢查新的'noAdults'。 – Leigh

回答

0

它拋出異常你處理的字符串輸入的不好的情況下之前,它無法在第一行。在嘗試int()之前,您可以檢查isalpha(),或者您可以捕獲ValueError異常。

爲了擴展chepner's solution,有一些額外的打印行告訴你是怎麼回事:

while True: 
    noAdults = input("Please enter the number of adults:") 
    try: 
     noAdults = int(noAdults) 
    except ValueError: 
     print("Not a valid number") 
     continue 
    if noAdults >= 0: 
     break 
    else: 
     print("Not greater than 0") 

print(noAdults) 

這是在Python 3

+0

我試圖檢查isalpha()之前做int ..我得到的是alpha是返回錯誤消息,但我無法得到int返回..仍然返回一個錯誤。我更新了我的代碼。 – Meg

+0

您需要像chepner的代碼一樣將其轉換爲'int'。 – Leigh

+0

我不明白你的意思。你在談論嘗試方法嗎? noAdults = int(noAdults) – Meg

2

您需要驗證輸入字符串是有效的整數,然後才能檢查它是否非負

while True:   
    noAdults = input("Please enter the number of adults:") 
    try: 
     noAdults = int(noAdults) 
    except ValueError: 
     print("Not a valid number") 
     continue 
    if noAdults >= 0: 
     break 
    else: 
     print("Number must be >= 0") 
+0

我試過這個,但它仍然出現錯誤。 – Meg

+0

這確實有效。但是,輸入新號碼時沒有提示「號碼必須是有效的」提示信息。我試圖添加它,但我很困惑。 – Meg

+0

我還沒有搬到Python 3,所以我仍然習慣於使用'print'函數而不是'print'語句。 – chepner