2016-09-22 105 views
0
Fahr = input("Insert temperature in Fahrenheit: ") 

while type(Fahr) != float or type(Fahr) != int: 

    Fahr = input("Error: Insert temperature in Fahrenheit: ") 

Celcius = ((Fahr) - 32) * 5/9 


print("Your imput: " + Fahr + " Fahrenheit") 

print("This is equal to: " + Celcius + " Celcius") 

我需要確保用戶只插入INT或浮點數。 當我執行此代碼時,即使當我插入INT或浮點數時,它也會自動進入while循環。 這段代碼有什麼問題,它應該如何?檢查輸入Python 3.5.2

+1

'Fahr'將永遠是一個字符串('str'),這就是'輸入( )'回報。 – cdarke

+0

閱讀此:http://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float-in-python – proton

+0

或者:http:// stackoverflow .com/questions/14566260/inputing-floats-integers-or-equations-in-raw-input-to-define-a-variable – cdarke

回答

-1

input()函數總是返回一個字符串。 首先轉換爲intfloat

+0

Fahr = int(輸入(「以華氏度插入溫度:」))。我現在這樣做了,但是當我輸入一個字符串時,它給了我:int()的基數爲10的無效字面值:'df' –

+0

這很正常。在這種情況下,您可以捕獲此異常並重試輸入 – 3Doubloons

+0

此答案不包括任何內容,以確保用戶輸入OP所需的號碼。 – TigerhawkT3

0

你能嘗試用下面的代碼:

def inp(): 
    try: 
     Fahr = float(raw_input("Insert temperature in Fahrenheit: ")) 
     return Fahr 
    except Exception as e: 
     return e 

Fahr = inp() 
while True: 
    if 'could not convert' in str(Fahr): 
     Fahr = inp() 
    else: 
     break 

Celcius = ((Fahr) - 32) * 5/float(9) 

print("Your input: " + str(Fahr) + " Fahrenheit") 
print("This is equal to: " + str(Celcius) + " Celcius") 

以下是輸出:

>>> ================================ RESTART ================================ 
>>> 
Insert temperature in Fahrenheit: hello 
Insert temperature in Fahrenheit: [email protected] 
Insert temperature in Fahrenheit:()()((
Insert temperature in Fahrenheit: 10.5 
Your input: 10.5 Fahrenheit 
This is equal to: -11.9444444444 Celcius 
+1

除非用戶沒有輸入數字,否則它會「正常工作」,並且OP表示他們「需要確保用戶只插入INT或浮點數」,這是不檢查的。 – TigerhawkT3

+0

我必須打印一個錯誤,並讓用戶插入一個新值,如果他插入一個字符串。對不起,我是這個網站的新手和我的第一個問題。謝謝您的幫助! –

+0

我編輯了代碼。好心檢查。 – Jeril