我尝试运行以下程序:
for i in range(5):
print(i, end=' ')
然而,它等待我在下一行写一些字符串并给出输出,如:
0 1 2 3 4 'Hi'
其中'Hi'是我输入的内容。我使用的是3.6.5的最新版本,似乎无法理解这个错误背后的原因。有人可以帮忙吗?
答案 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