如何无间隙或空格地打印?

2024-04-20 05:09:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在里做。在这个例子中,我想在中做什么:

在C中:

#include <stdio.h>

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

输出:

..........

在Python中:

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

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


Tags: 字符串inforreturnincludemainstdout空间
3条回答

它应该和Guido Van Rossum在这个链接中描述的一样简单:

回复:没有信用证怎么打印?

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

Is it possible to print something but not automatically have a carriage return appended to it ?

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

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

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

由于人们可能会根据标题来这里寻找它,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
..........

在Python 3中,可以使用^{}函数的sep=end=参数:

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

print('.', end='')

要在要打印的所有函数参数之间不添加空格,请执行以下操作:

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

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

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

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

Python2.6和2.7

从Python 2.6中,您可以使用^{} module从Python 3导入print函数:

from __future__ import print_function

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

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

或者你可以使用^{}

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

你可能还需要打电话

sys.stdout.flush()

以确保立即刷新stdout

相关问题 更多 >