0

我是“如何像计算机科学家一样思考”第 6 章关于迭代/While 循环部分的初学者。

在书中,二维表的语法如下:

i=1
while i <= 6:
  print 2*i, '   ', 
  i=i+1 
print

但是,这样做会导致语法错误。终端给了

File "<stdin>", line 4
    print
        ^
SyntaxError: invalid syntax

我知道第二个打印语句是不必要的,删除它会纠正错误;但是,本书后面部分的一行解释说,第二个 print 语句旨在在打印水平表后创建一个新行。因此,我认为这可能是一个拼写错误。我尝试了几种变体,但仍然无法找到解决方案。

4

3 回答 3

3

好像是shell的问题

执行您作为文件发布的代码段时,它会运行。您似乎在 shell 中运行(<stdin>提示),并且在 shell 中,相同的片段也不适用于我(Ubuntu 上的 python 2.7.2)。

于 2012-05-07T13:56:46.383 回答
3

您没有提及文件中是否包含这些内容,或者您​​是否手动输入。

在后一种情况下,您的终端看起来像

>>> i=1
>>> while i <= 6:
...   print 2*i, '   ',
...   i=i+1
... print
  File "<stdin>", line 4
    print
        ^
SyntaxError: invalid syntax

也就是说,为了终止预期的while子句,您必须输入一个空行:

>>> i=1
>>> while i <= 6:
...   print 2*i, '   ',
...   i=i+1
...

在这里执行已经发生。

if 1另一种解决方法可能是在子句中输入要执行的内容:

>>> i=1
>>> if 1:
...  while i <= 6:
...   print 2*i, '   ',
...   i=i+1
...  print
...
2     4     6     8     10     12
>>>
于 2012-05-07T14:00:43.417 回答
1

...我认为这是print语句末尾的连续逗号。如前所述,如果您使用的是 Python 3,它会变成一个函数(例如print(2*i))。

编辑: 仔细观察后,简单地删除多余的print. 这是没有必要的。如果您要打印一个水平表,那么在初始打印语句中附加换行符并没有错。

于 2012-05-07T13:41:26.380 回答