如何在没有换行符或空格的情况下打印

新手上路,请多包涵

C 中的示例:

 for (int i = 0; i < 4; i++)
    printf(".");

输出:

 ....

在 Python 中:

 >>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .

在 Python 中, print 将添加一个 \n 或空格。我怎样才能避免这种情况?我想知道如何将字符串“附加”到 stdout

原文由 Andrea Ambu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 367
2 个回答

在 Python 3 中,您可以使用 sep=end= print 函数的参数:

不在字符串末尾添加换行符:

 print('.', end='')

要在要打印的所有函数参数之间不添加空格:

 print('a', 'b', 'c', sep='')

您可以将任何字符串传递给任一参数,并且可以同时使用这两个参数。

如果您在缓冲方面遇到问题,可以通过添加 flush=True 关键字参数来刷新输出:

 print('.', end='', flush=True)

Python 2.6 和 2.7

从 Python 2.6 开始,您可以使用 __future__ 模块 从 Python 3 导入 print 函数:

 from __future__ import print_function

这允许您使用上面的 Python 3 解决方案。

但是,请注意 flush 关键字在 Python 2 中从 __future__ 导入的 print 函数的版本中不可用;它仅适用于 Python 3,更具体地说是 3.3 及更高版本。在早期版本中,您仍然需要通过调用 sys.stdout.flush() 手动刷新。您还必须重写执行此导入的文件中的所有其他打印语句。

或者你可以使用 sys.stdout.write()

 import sys
sys.stdout.write('.')

您可能还需要致电

sys.stdout.flush()

确保立即刷新 stdout

原文由 codelogic 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于 Python 2 和更早版本,它应该像 Re: How does one print without a CR? 中描述的一样简单? 作者 Guido van Rossum (转述):

是否可以打印一些东西,但不会自动附加回车符?

是的,在要打印的最后一个参数之后附加一个逗号。例如,此循环在以空格分隔的一行上打印数字 0..9。请注意添加最终换行符的无参数“打印”:

 >>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>>

原文由 KDP 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题