2012-08-09 46 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") 

你错过了括号,加上一个冒号在错误的地点并没有去到上最后一位另一条线。希望这有助于:)