2017-04-09 69 views
0

我目前正在學習Python,並且不知道很多 - 所以我需要有經驗的人來幫助我。如何解決這個煩人的錯誤信息? (Python 3.6.1)

的代碼是這樣的:

usernum = input('Enter a number, Ill determine if its pos, neg, OR Zero.') 
if usernum < 0: 
    print("Your number is negative.") 
if usernum > 0: 
    print("Your number is positive.") 
if usernum == 0: 
    print("Your number is zero.") 

的錯誤是這樣的:

Traceback (most recent call last): 
    File "C:\Users\Admin\Documents\Test.py", line 2, in <module> 
    if usernum < 0: 
TypeError: '<' not supported between instances of 'str' and 'int' 
+0

'usernum'是一個字符串。使用int(usernum = input('輸入一個數字,Ill確定它的pos,neg,或者零)是一個整數。')' –

+0

http://stackoverflow.com/questions/379906/parse-string-to浮動或詮釋 - 不要忘記漂浮。 – stdunbar

回答

0

更改您的第一線,

usernum = int(input('Enter a number, Ill determine if its pos, neg, OR Zero.')) 

如您有它,usernum值,因爲input()總是返回Pyt中的字符串hon 3.x,並且您正試圖將其與整數進行比較。所以先把它轉換成一個整數。我通過圍繞input調用int()類型轉換來做到了這一點。

請注意,如果用戶輸入的不是整數,這會引發錯誤。這可以通過異常處理來處理,而異常處理現在可能超出了你的範圍。

1

嘗試:

usernum = int(input('Enter a number, Ill determine if its pos, neg, OR Zero.')) 
if usernum < 0: 
    print("Your number is negative.") 
if usernum > 0: 
    print("Your number is positive.") 
if usernum == 0: 
    print("Your number is zero.") 

input(...)創建的字符串,所以你需要通過使它經過int(...)使該字符串的整數。另外我建議切換你IFS到如果elif和else從句:

usernum = int(input('Enter a number, Ill determine if its pos, neg, OR Zero.')) 
if usernum < 0: 
    print("Your number is negative.") 
elif usernum > 0: 
    print("Your number is positive.") 
else: 
    print("Your number is zero.") 

這不是什麼大不了的事,但這種方式,你只執行代碼實際需要。因此,如果usernum小於0,則不評估下一個子句。最後,您可以考慮添加用戶輸入錯誤更正:

usernum = None 
while usernum is None: 
    try: 
     usernum = int(input('Enter a number, Ill determine if its pos, neg, OR Zero.')) 
    except ValueError as ex: 
     print("You didn't enter an integer. Please try again.") 
if usernum < 0: 
    print("Your number is negative.") 
if usernum > 0: 
    print("Your number is positive.") 
if usernum == 0: 
    print("Your number is zero.") 
+0

是的,我認爲這將很好地工作,謝謝。 –