这段python代码中的语法正确吗?
我刚开始为大学课程学习python。我们正在使用尼克·蒙福特的《艺术与人文探索性编程》一书。在前几章的其中一章中,他介绍了一个无法执行的程序的代码。因为他把它作为一个解释性的例子,我真的需要它来工作,以便能够通过书中的章节 我已经尝试了Python3和Python2,但是在第1行中不断得到消息“语法不正确”这段python代码中的语法正确吗?,python,Python,我刚开始为大学课程学习python。我们正在使用尼克·蒙福特的《艺术与人文探索性编程》一书。在前几章的其中一章中,他介绍了一个无法执行的程序的代码。因为他把它作为一个解释性的例子,我真的需要它来工作,以便能够通过书中的章节 我已经尝试了Python3和Python2,但是在第1行中不断得到消息“语法不正确” def double([1, 10, 5]): result = [] #here starts the function body for element in sequ
def double([1, 10, 5]):
result = [] #here starts the function body
for element in sequence:
result = result + [element * 2]
return result
它应该将括号内输入的数字的值加倍,但似乎在函数名中同时使用括号和括号会导致问题。然而,书中就是这样写的。
作者是否在代码中犯了错误,或者该代码是否可以在较旧版本的python中执行?
非常感谢你的帮助 试试这个:
def double(sequence):
result = [] #here starts the function body
for element in sequence:
result = result + [element * 2]
return result
然后执行double([1,10,5])
调用函数
原因是函数接受参数或变量,而不是值。只有在调用该函数时,才将值传递给它恐怕您误读了这本书。通过查看,我可以看出作者正确地给出了函数 在(第3章第一页,Double,Double!)中,函数定义为:
def double(sequence):
result = []
for element in sequence:
result = result + [element * 2]
return result
在上(在标题为3.1的部分中尝试该函数),作者使用名称(double
)调用该函数,后跟调用表达式(括号和每个参数的值):
这告诉Python执行double
函数的主体,并将sequence
设置为[1,10,5]
您似乎已将这两种语法组合在一起。您用列表本身替换了def double(..):…
函数定义语法中的序列
参数名称。这并不是它的工作原理,函数定义具有调用者必须为其提供值的参数,但参数本身不是表达式
如果要替换函数中的sequence
参数,则可以完全删除该参数,只需在函数体中指定列表:
def double():
sequence = [1, 10, 5]
result = []
for element in sequence:
result = result + [element * 2]
return result
此版本的函数接受参数,只有double()
可以工作。这几乎没有那么有用
另一方面:您正在使用的这本书教授Python2语法,这是该语言的一个修订版,很快就会过时。最后一行是Python2.7,它是
如果你想找到一个更为最新的替代方案,我建议你看看,它以O'Reilly出版的纸质形式提供,或者以PDF或HTML免费在线版本提供。本书教授Python 3,并在世界各地的学院和大学中使用
您不必立即切换,前几章中教授的代码大多是版本不可知的。我认为这本书在第65页介绍了
print
语句,而在Python 3中它是一个函数。不过,我希望它基本上不会出现问题更大的差异。看起来要么是它们打算用默认值初始化函数,而忘记了命名输入参数,要么是它们混淆了定义函数和调用函数的过程,您需要有参数名。试试这个def-double(sequence=[1,10,5]):
而不是def-double([1,10,5]):
#这里开始函数体
不仅是一个无用的注释,而且是最糟糕的:它是错误的。函数体在声明结果之前启动。很好!实际上我是第一次尝试这个,但当时我正在使用Python3。因此,我看到Python3和Python2之间的差异非常大。不管怎样,这就解决了问题。谢谢你@KilgoreTrout33:根据定义,该函数在Python2和Python3上运行良好。差异并没有那么大,在Python包索引(PyPI)上分布的大量库可以在这两个平台上使用@KilgoreTrout33:我添加了一些关于学习Python 3的建议。。。考虑到这本书,了解这一点非常有用。非常感谢您的帮助和建议!
def double():
sequence = [1, 10, 5]
result = []
for element in sequence:
result = result + [element * 2]
return result