2012-08-09 30 views
0

這段代碼爲什麼不起作用?縮進是錯誤的還是代碼錯誤?此代碼中的if/else語法有什麼問題?

print "Welcome to the English to Pig Latin translator!" 
original = raw_input('Enter a word.') 
if len(original) > 0: 
    print original 
else print "empty": 

任何意見,將不勝感激。我正在嘗試通過Codecademy學習Python。

+2

你得到的錯誤消息確實提供了一個有價值的提示:''SyntaxError''指向'print'標記的'^'。這意味着解析器實際上期望在這裏有一個不同的標記 - 即冒號。 – 2012-08-09 19:47:31

+3

另請注意,在Python中測試非空字符串的慣用方法是「if original」,而不是「if len(original)> 0」。 – 2012-08-09 19:48:49

回答

8
else print "empty": 
    ^   ^

需要有串後else:您打印,即

else: print "empty" 
    ^   ^

所以,你有:,但在錯誤的地方:)

+2

'print「empty」:'? :^) – DSM 2012-08-09 19:46:17

+1

不,我的意思是第二個':'也是一個語法錯誤。 – DSM 2012-08-09 19:47:46

4

您或者需要將冒號移動到else之後:

if len(original) > 0: 
    print original 
else: print "empty" 

或者,如果你願意,你可以使用一個conditional expression

print original if len(original) > 0 else "empty" 
+0

如果你真的想使用某種形式的條件表達式,我更願意在這個特定的地方使用'print original或'empty'案件。 (我實際上更喜歡顯式的'if'語句。) – 2012-08-09 19:51:29

2

什麼你做了:

print "Welcome to the English to Pig Latin translator!" 
    original = raw_input('Enter a word.') 
    if len(original) > 0: 
     print original 
    else print "empty": 

你需要做什麼:

print("Welcome to the English to Pig Latin translator!") 
    original = raw_input('Enter a word.') 
    if len(original) > 0: 
     print("original") 
    else: 
     print("empty") 

你錯過了括號,加上一個冒號在錯誤的地點並沒有去到上最後一位另一條線。希望這有助於:)