我是“如何像计算机科学家一样思考”第6章的初学者,关于迭代/循环的部分。
在本书中,二维表的语法如下:
i=1
while i <= 6:
print 2*i, ' ',
i=i+1
print
但是,这样做会导致语法错误。终端给了
File "<stdin>", line 4
print
^
SyntaxError: invalid syntax
我知道第二个print语句是不必要的,删除它会纠正错误;但是,本书后面部分的一行说明第二个print语句用于在打印水平表后创建一个新行。因此,我认为这可能是一个拼写错误。我尝试了几种变化,但仍然无法找到解决方案。
答案 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
会更容易。没有必要。如果您打印出一个水平表,那么在您的初始打印语句中附加换行符并没有错。