首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这段python代码中的语法正确吗?

这段python代码中的语法正确吗?
EN

Stack Overflow用户
提问于 2019-09-12 17:54:52
回答 2查看 100关注 0票数 2

我刚开始为大学课程学习蟒蛇。当时正在使用尼克·蒙福尔的书“艺术与人文的探索性编程”。在第一章中,他给出了不会执行的程序的代码。由于他正在使用它作为一个解释的例子,我真的需要它工作,以便能够通过这一章在书中。

我已经尝试过python 3和python 2,但是在第1行中一直得到消息“不正确的语法”。

代码语言:javascript
运行
复制
def double([1, 10, 5]): 
    result = [] #here starts the function body
    for element in sequence:
        result = result + [element * 2]
    return result  

它应该是括号内数字输入值的两倍,但是在函数名称中使用括号和括号似乎会导致问题。然而,书中就是这样写的。作者是否在代码中犯了错误,或者这段代码在较旧版本的python中是可执行的呢?非常感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-12 18:05:15

恐怕你误读了这本书。查看谷歌图书预览本章,我可以看到作者正确地给出了函数。

第45页 (第3章的第一页,Double,Double!)上,函数被定义为:

代码语言:javascript
运行
复制
def double(sequence):
    result = []
    for element in sequence:
        result = result + [element * 2]
    return result

第48页上(在标题3.1中,作者调用函数,使用名称(double),后面跟着一个调用表达式(括号和每个参数的值):

代码语言:javascript
运行
复制
double([1, 10, 5])

这告诉Python执行double函数的主体,并将sequence设置为[1, 10, 5]

您似乎已经将这两部分语法结合起来了。您用列表本身替换了sequence函数定义语法中的def double(....): ...参数名。这并不完全是它的工作方式,函数定义具有调用方必须提供值的参数,但参数本身并不是表达式。

如果要替换函数中的sequence参数,则可以完全删除该参数,只需在函数体内分配列表:

代码语言:javascript
运行
复制
def double():
    sequence = [1, 10, 5]
    result = []
    for element in sequence:
        result = result + [element * 2]
    return result

该函数的这个版本使用参数,只有double()才能工作。这一点也没那么有用!

顺便提一句:你正在使用的这本书教的是Python 2语法,这是对语言的一种修订,很快就会过时。行的末尾是Python2.7,它是几个月后就到生命的尽头

如果您想要找到更最新的替代方案,我建议您查看想想Python,第二版,它是由O‘’Reilly发表的纸质形式,或作为一个PDF或HTML版本在线免费。这本书教Python 3,并在世界各地的大学和学院使用。

您不必立即切换,前几章中教授的代码大多是版本不可知论的。我认为这本书在第65页引入了print语句,它在Python3中是一个函数。然而,我希望它大部分远离那些更有问题的差异。

票数 2
EN

Stack Overflow用户

发布于 2019-09-12 17:58:24

试试这个:

代码语言:javascript
运行
复制
def double(sequence): 
    result = [] #here starts the function body
    for element in sequence:
            result = result + [element * 2]
    return result

然后执行double([1, 10, 5])调用函数。

原因是该函数接受参数或变量,而不是接受值。只有在调用函数时,才会将值传递给它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57912158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档