python

时间:2018-06-11 15:28:21

标签: python python-3.x

我尝试运行以下程序:

for i in range(5):
  print(i, end=' ')

然而,它等待我在下一行写一些字符串并给出输出,如:

0 1 2 3 4 'Hi'

其中'Hi'是我输入的内容。我使用的是3.6.5的最新版本,似乎无法理解这个错误背后的原因。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

end默认值为'\n',这意味着print()将在打印参数后写入换行符。这会将光标放在下一行。

通常,stdout(默认情况下print()写入)也行缓冲,这意味着写入的数据不会被刷新(并显示在终端上)直到看到一个换行符,表示该行的结束。

您用空格替换换行符,因此不会写入换行符;而是写一个空格,让你在同一行上一个接一个地写连续的数字。

print()循环后添加一个额外的空for调用,以便在循环后编写换行符:

for i in range(5):
    print(i, end=' ')

print()

您还可以向flush=True调用添加print(..., end=' ')以显式刷新缓冲区。

或者,对于足够小的range(),将值作为单独的参数传递给print(),将end保留为默认值。单独的参数由sep参数分隔,默认设置为空格:

print(*range(5))

*对象前面的range()告诉Python循环遍历range()对象,并将作为单独参数生成的所有值传递给print()调用;所以所有5个数字都打印在其间的空格和最后的换行符:

>>> print(*range(5))
0 1 2 3 4