def cube(number):
return number * number
def by_three(number):
if number % 3 == 0:
return cube(number)
print "%d is divisible by 3" (number)
else:
return False
错误讯息:
File "python", line 8
else:
^
SyntaxError: invalid syntax
答案 0 :(得分:2)
Python是一种基于缩进的语言,与基于块分隔符的语言(如C或Pascal)不同。您在else
上的缩进必须与if
的缩进相匹配。无论如何,我不是这个结构的忠实粉丝:
if condition:
return
else:
do something
如果条件为真,那么你返回的事实意味着之后的所有代码都是自动 else
子句,所以你可以放弃它:
if condition:
return
do something
此外,在您之后,您无法在by_three
中打印任何内容,因为您已经返回了一个值,因此您需要整理您的订单那里的陈述。
而且,对于字符串格式化,%
运算符的存在至关重要。
考虑到所有这些,您可能想尝试:
def cube(number):
return number * number
def by_three(number):
if number % 3 == 0:
print "%d is divisible by 3" % (number)
return cube(number)
return False
答案 1 :(得分:1)
Python对空白区域敏感,因此您的else块必须与if块具有相同的缩进。另外,为了实际看到print语句,必须在调用print函数后返回,否则函数将在调用print之前返回,并且您将看不到任何输出。请尝试下面的代码。它还使用Python 3的格式函数来格式化字符串。
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<audio class="my-audio-player" controls></audio>
答案 2 :(得分:1)
首先,您需要知道, indention是Python 中语法的一部分,它出现在语言ABC之后,就像@paxdiablo提到的那样。
但实际上,正如我所知,Python中的else
可以匹配if
,try-except
和for
。但在您的情况下,else
与def
处于同一级别,但与if
,try-catch
和for
中的任何一个都不匹配。因此,会发生语法错误。
更详细,下面是三个例子:
if 1==1:
print "1 is equal to 1"
else:
print "1 is not equal to 1"
第二
try:
raise Exception("Raise some exception")
except Exception as e:
print e
else:
print "No exception occured!"
最后:
list_ = range(10)
for i in list_:
if i == 10:
break
print(i)
else:
print('10 is not in list_')