协慌网

登录 贡献 社区

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

问题出在标题中。

我想在做到这一点。我想在中的这个例子中做些什么:

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

输出:

..........

在 Python 中:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

在 Python 中print会添加\n或空格,我该如何避免?现在,这只是一个例子。不要告诉我,我可以先构建一个字符串然后打印它。我想知道如何将字符串 “追加” 到stdout

答案

一般方式

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

您可能还需要打电话

sys.stdout.flush()

确保stdout立即刷新。

Python 2.6+

从 Python 2.6,您可以从 Python 3 导入print功能:

from __future__ import print_function

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

Python 3

在 Python 3 中, print语句已更改为函数。在 Python 3 中,您可以改为:

print('.', end='')

这也适用于 Python 2,只要您使用from __future__ import print_function

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

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

但是,请注意,在 Python 2 中从__future__导入的print函数版本中, flush关键字不可用; 它只适用于 Python 3,更具体地说是 3.3 及更高版本。在早期版本中,您仍然需要通过调用sys.stdout.flush()手动刷新。

来源

  1. https://docs.python.org/2/library/functions.html#print
  2. https://docs.python.org/2/library/__future__.html
  3. https://docs.python.org/3/library/functions.html#print

它应该像 Guido Van Rossum 在这个链接中所描述的那样简单:

Re:如何在没有 ac / r 的情况下打印?

http://legacy.python.org/search/hypermail/python-1992/0115.html

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

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

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

注意:这个问题的标题曾经是 “如何在 python 中打印?”

由于人们可能会根据标题来到这里寻找它,Python 也支持 printf 样式替换:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

并且,您可以轻松地乘以字符串值:

>>> print "." * 10
..........