0

伙计们,我最近在学习 Python,当我在 Python Shell(Linux 终端中的命令)和文件中编写一些简单的代码时遇到了问题:

在 Python 外壳中:

>>> def firstn(n):
...     num, nums = 0, []
...     while num < n:
...         nums.append(nums)
...         num += 1
...     return nums
... sum_of_first_n = sum(firstn(1000000))
  File "<stdin>", Line7
    sum_of_firstn_n = sum(firstn(1000000))
                  ^
SyntaxError: invalid syntax

如果 print(sum(firstn(1000000))),打印也会是 SyntaxError

但是当我把代码放到一个文件中并执行它时,它完全可以,没有SyntaxError,我不知道为什么。有谁能解释一下吗?PS:代码来自https://wiki.python.org/moin/Generators

4

2 回答 2

4

在交互模式下,放空行结束块。

>>> def firstn(n):
...     num, nums = 0, []
...     while num < n:
...         nums.append(nums)
...         num += 1
...     return nums
...
>>> sum_of_first_n = sum(firstn(1000000))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'

顺便说一句,代码在以下行中进行了循环引用:

nums.append(nums)

>>> def firstn(n):
...     num, nums = 0, []
...     while num < n:
...         nums.append(num) # <--
...         num += 1
...     return nums
...
>>> sum_of_first_n = sum(firstn(1000000))
>>> sum_of_first_n
499999500000L
于 2013-11-03T06:10:30.823 回答
0

当我直接从 Python 文档复制时,它对我来说很好。当我尝试在最后一行 (sum_of_first_n) 之前添加一个空格时,我收到了相同的语法错误消息。很可能是复制粘贴错误。尝试复制到文本编辑器以检查空格,然后粘贴到终端。

于 2013-11-03T06:14:12.413 回答