2013-07-21 104 views
0
method = input("Is it currently raining? ") 
if method=="Yes" : 
    print("You should take the bus.") 
else: distance = input("How far in km do you want to travel? ") 
if distance == > 2: 
    print("You should walk.") 
elif distance == < 10 : 
    print("You should take the bus.") 
else: 
    print("You should ride your bike.") 

NVM,我固定it..for那些誰擁有了同樣的問題,是對神交學習它只是一個縮進的問題,我忘了寫INT ...Python 3的語法錯誤

+0

請不要更改你的問題中的代碼在你收到答案後。它使答案毫無意義。 – RichieHindle

+0

@RichieHindle對不起,我不知道...我只需要仔細檢查我複製了正確的代碼...:0對不起 –

+0

我已經回滾到您收到答案的代碼。 – Marcin

回答

2

所以因爲你增加了第二個問題,我會添加第二個答案:)

在Python 3中,input()函數總是返回一個字符串,你不能比較字符串和整數而不先轉換東西(Python 2在這裏有不同的語義)。

>>> distance = input() 
10 
>>> distance 
'10' <- note the quotes here 
>>> distance < 10 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unorderable types: str() < int() 

將字符串轉換爲整數值,使用int(string)

>>> distance = int(distance) 
>>> distance 
10 <- no quotes here 
>>> distance < 10 
False 

(也注意到,上面的代碼段有一個凹槽問題 - 你的「,如果距離結束< 2「行,不管你是否回答」是「,要解決這個問題,你必須以同樣的方式縮進應該在」其他「分支中的所有內容。)

2

您需要指定如何處理每一個對比對比,所以

elif distance <=2 and >=10 

應該是:

elif distance <=2 and distance >=10: 

(有更聰明的方式做THI S,但上面是最快捷的修復)

+0

這很奇怪,因爲在邏輯上,這是有道理的,但它仍然顯示無效的語法錯誤! (可能是由於錯誤的縮進?) –

+0

對於讀者來說,當然,但編譯器並沒有太多的假設... – Fredrik

+0

@fredrik我已經嘗試了你所說的並修復了縮進,但它仍然顯示錯誤的語法(這次指着10)......我做錯了什麼? :/ –