目前在codecademy上做一个递归教程。它告诉我,我是对的,可以进入下一课,但也提出:
File "python", line 6
else:
^
SyntaxError: invalid syntax
所以很明显它是对的!你能看看这个链接并告诉我什么了吗?! 我很困惑!
http://www.codecademy.com/courses/python-intermediate-en-7f7dx/0/2#
如果我的代码没有显示,则为:
def timesTwo(n):
if(n == 0):
return '2 x 0 = 0'
n*2
else:
return timesTwo(n-1) + 2
谢谢你们
答案 0 :(得分:5)
以下内容适合您。
def timesTwo(n):
if(n == 0):
return 0 # What is 2 x 0 again? I forgot...
else:
return timesTwo(n-1) + 2 #You write this!
我也不确定你回来后为什么要做n * 2
。这是一个语法错误,因为if
缺少else
。
答案 1 :(得分:1)
语法错误与Python如何解释行开头的缩进有关。由于n*2
是与if
行垂直排列的表达式,而不是缩进,因此它有效地发出if
块的 end 信号。这意味着,而不是else
与if
相关联,它本身就是悬空 - 这是非法的。
相比之下,此代码没有语法错误,因为if
和else
之间只有缩进代码:
# NOTE: this code still has problems!
def timesTwo(n):
if(n == 0):
return '2 x 0 = 0'
n * 2
else:
return timesTwo(n-1) + 2
但是,此代码至少还有两个主要错误。一个是表达式n * 2
无法访问,因为它出现在return
语句之后(请确保您理解这一点,因为理解return
的作用非常重要)。另一个问题与n == 0
案例的作用有关,如果您尝试运行timesTwo(1)
并希望看到会发生什么,这将有望清楚......