为什么我为这个函数调用得到'语法无效'?

时间:2015-09-03 08:26:21

标签: python python-2.7

在程序中 -

def sum3or5muls(lim):
    mulsum = 0
    for i in range(1, lim+1):
        if i%3==0 or i%5==0 and not(i%3==0 and i%5==0):
            print i, mulsum
            mulsum += i
        return mulsum

print sum3or5muls(1000)

我在最后一行的print调用中的t下面一直得到'语法无效'。我尝试了各种各样的补救措施,但我被困住了。有什么想法吗?

编辑:可能是因为chrome python只是提示,所以我没有离开编辑模式......是的,就是它 - 通常会提供一个文本文件而不是在提示符处做所有事情。如果有人想解决这个版本的python感觉自由。另外两件事:'if'子句中前两个条件应该有括号,return必须返回。

4 个答案:

答案 0 :(得分:2)

将代码剪切并粘贴到我的编辑器中,看到它在Python 2下完美运行(Python 3会抱怨第一个print而不是最后一个。

它打印为零,但由于你的return语句循环中而不是在它之后(因此它只进行一次迭代)。

我唯一的建议是更详细地查看文件,以确保您没有混合标签和空格,倒数第二行没有空格且没有&# 39;那里有任何有趣的隐形人物。

例如,您可以在Linux下使用:

执行此操作
od -xcb myprog.py

答案 1 :(得分:1)

您可能正在使用Python 3(您可以使用python --version确认)。

您可以通过在print电话周围添加括号来修复代码以使用Python 3:

print(i, mulsum)
...
print(sum3or5muls(1000))

或者,安装Python 2并实际运行它(它可能已经以名称python2安装)。

答案 2 :(得分:1)

正如其他人已经提到的,很多事情都可能导致你得到的错误:

  • 您正在使用Python版本< 3
  • 混合标签和空格

尝试在您的计算机上运行代码,只需打开一个文件,将代码复制到其中并运行它。

在您可能知道代码无法运行的原因之后,现在是时候修复代码本身,以便提供良好的结果。请注意以下事项:

  • 您只需在一次迭代后返回结果,就应该将return移到循环外

  • 您的病情可以简化和减少

答案 3 :(得分:0)

使用“ print()”命令调用函数,这是通过在命令的括号之间输入调用来实现的。

根据您的示例:

...
print (sum3or5muls(1000))

注意:

您的帖子自2015年以来。所以,也许是新版本的Python (目前为v3.7.0)已解决了该问题。无论如何,我正在使用“ Repl.it”操作的Python v3.6.1。

亲切的问候

Ali.Works