繁体   English   中英

学习循环时的语法错误

[英]Syntax Error While Learning Loops

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

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

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

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

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

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

外壳似乎有问题

执行您以文件形式发布的代码段时,该代码段将运行。 您似乎在shell中运行( <stdin>暗示),并且在shell中,相同的代码段对我也不起作用(在Ubuntu上为python 2.7.2)。

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

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

>>> 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
>>>

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

编辑:稍微靠近一点后,只需除去多余的print会更容易。 没必要 如果要打印水平表,则在初始打印语句后添加换行符没有任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM