学习循环时语法错误

时间:2012-05-07 13:38:05

标签: python

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

这似乎是shell的问题

执行您作为文件发布的代码段时,它会运行。你似乎在shell中运行(<stdin>提示),而在shell中,相同的代码片段对我来说也不起作用(在Ubuntu上也是python 2.7.2)。

答案 1 :(得分: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
>>>

答案 2 :(得分:1)

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

编辑:仔细观察之后,简单地删除额外的print会更容易。没有必要。如果您打印出一个水平表,那么在您的初始打印语句中附加换行符并没有错。