在程序中 -
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必须返回。
答案 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)
正如其他人已经提到的,很多事情都可能导致你得到的错误:
尝试在您的计算机上运行代码,只需打开一个文件,将代码复制到其中并运行它。
在您可能知道代码无法运行的原因之后,现在是时候修复代码本身,以便提供良好的结果。请注意以下事项:
您只需在一次迭代后返回结果,就应该将return
移到循环外
您的病情可以简化和减少
答案 3 :(得分:0)
使用“ print()”命令调用函数,这是通过在命令的括号之间输入调用来实现的。
根据您的示例:
...
print (sum3or5muls(1000))
注意:
您的帖子自2015年以来。所以,也许是新版本的Python (目前为v3.7.0)已解决了该问题。无论如何,我正在使用“ Repl.it”操作的Python v3.6.1。
亲切的问候
Ali.Works