Python 不换行打印(打印“a”),打印一个空格,如何删除?

Python 不换行打印(打印“a”),打印一个空格,如何删除?,python,string,printing,python-2.x,Python,String,Printing,Python 2.x,我有以下代码: >>> for i in xrange(20): ... print 'a', ... a a a a a a a a a a a a a a a a a a a a 我想输出不带“”的“a”,如下所示: aaaaaaaaaaaaaaaaaaaa 有可能吗?没有什么? 你是说 >>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa ?什么,或者累加成一个字符串,然后打印一次: s = ''; for i

我有以下代码:

>>> for i in xrange(20):
...     print 'a',
... 
a a a a a a a a a a a a a a a a a a a a
我想输出不带“”的“a”,如下所示:

aaaaaaaaaaaaaaaaaaaa
有可能吗?

没有什么? 你是说

>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa

什么,或者累加成一个字符串,然后打印一次:

s = '';
for i in xrange(20):
    s += 'a'
print s

可以通过在print语句之间向stdout打印空字符串来抑制空格

>>> import sys
>>> for i in range(20):
...   print 'a',
...   sys.stdout.write('')
... 
aaaaaaaaaaaaaaaaaaaa

但是,一个更简洁的解决方案是,首先生成要打印的整个字符串,然后用一条print语句将其输出。

您可以打印一个退格字符“\b”:

结果:

aaaaaaaaaaaaaaaaaaaa
文件中的:

>>> from __future__ import print_function
>>> print('a', end='')
显然,这只适用于Python3.0或更高版本或2.6+版本,在开始时使用from _ufuture _u导入print_函数。在Python 3.0中,print语句被删除,并默认成为print函数。

Python 3.x:

for i in range(20):
    print('a', end='')
Python 2.6或2.7:

from __future__ import print_function
for i in xrange(20):
    print('a', end='')

有很多方法可以达到你的目的。如果你只是想为你的案件找到一个解决方案,那么就用“提及”这个词。只有当每个print语句都打印相同的字符串时,这才起作用。请注意,它适用于任何长度字符串的乘法,例如“foo”*20

如果你想在一般情况下这样做,建立一个字符串,然后打印一次。这将为字符串消耗一点内存,但只进行一次打印调用。请注意,使用+=的字符串连接现在在要连接的字符串大小上是线性的,因此这将非常快

>>> for i in xrange(20):
...     s += 'a'
... 
>>> print s
aaaaaaaaaaaaaaaaaaaa
或者你可以更直接地使用,哪种打印是一种包装。这将只写入您提供给它的原始字符串,没有任何格式。请注意,即使在20 as结束时也不会打印换行符

Python3将print语句更改为,这允许您设置一个end参数。您可以在>=2.6中通过从未来导入来使用它。不过,我在任何严肃的2.x代码中都会避免这种情况,因为对于那些从未使用过3.x的人来说,这会有点混乱。不过,它应该会让你尝到3.x带来的一些好处

>>> from __future__ import print_function
>>> for i in xrange(20):
...     print('a', end='')
... 
aaaaaaaaaaaaaaaaaaaa>>> 

如果希望它们一次显示一个,可以执行以下操作:

import time
import sys
for i in range(20):
    sys.stdout.write('a')
    sys.stdout.flush()
    time.sleep(0.5)
sys.stdout.flush是每次运行循环时强制写入字符所必需的。

作为旁注:

打印是O1,但构建一个字符串,然后打开打印,其中n是字符串中的字符总数。因此,是的,虽然构建字符串更干净,但这并不是最有效的方法

我的做法如下:

from sys import stdout
printf = stdout.write
现在有了一个print函数,它可以打印出您给定的任何字符串,而每次都不返回新行字符

printf("Hello,")
printf("World!")
输出将是:你好,世界

但是,如果要打印整数、浮点数或其他非字符串值,则必须使用str函数将它们转换为字符串

printf(str(2) + " " + str(4))
输出将是:24

那是很久以前的事了

现在,在Python3.x中,这将非常简单

代码:

输出:

aaaaaaaaaaaaaaaaaaaa 
有关打印功能的详细信息

在这里:

可以使用逗号打印多个值

3个值将由“-”字符分隔

您可以使用任何字符,而不是像sep='@'或sep='good'这样的偶数字符串

end='\n'
默认情况下,打印函数将“\n”字符放在输出的末尾

但您可以通过更改结束变量值来使用任何字符或字符串

比如end='$'或end='.'或end='Hello'

file=sys.stdout
这是系统标准输出的默认值

使用此参数可以创建输出文件流,如

通过这段代码,您将创建一个名为output.txt的文件,其中包含您的输出 我是一个会存储的程序员

flush = False
这是一个默认值 使用flush=True,您可以强制刷新流

def printSleeping():
     sleep = "I'm sleeping"
     v = ""
     for i in sleep:
         v += i
         system('cls')
         print v
         time.sleep(0.02)
这真的很简单

对于Python3+版本,您只需编写以下代码

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

只要将循环转换为以下代码,您就不必担心其他事情了

@soulsekah:是的,在这种情况下,只使用sys.stdout.write更方便。但是,我想说明,将空字符串写入stdout会抑制使用print写入的元素之间的空格,这在类似情况下可能很有用。@A当字符串乘法的答案出现时,我阅读了这个问题,并认为我应该概述几个选项。其他人来了,而我正在整理我的答案。它很快就被接受了,否则我可能会删除它。-1不要通过串联建立字符串;它在^2上,而不是在。使用。加入。。。相反,我对你的回答没有问题,它总结了一切,这很好。但是这样做,你会让其他回答的人泄气。有很多好答案,都值得+1。想象一下,如果每个人都开始做总结。@Katrielex:这有关系吗?OP是否要求优化或复杂性?20根弦有关系吗?得了吧,你一定是在开玩笑。@Katrielex错了,在Python中使用+=进行字符串连接是一个连接的常量时间操作
一个角色。我很惊讶没有人提到。在xrange20中为我加入joina。它比仅仅做一个*20要灵活得多,因为我假设这是一个简单的例子。你说我可以在输出一个字符的同时输出无限量的文本吗?当我重新定义printf到stdout.write时,我的stdout.write似乎正在打印图表的数量字符串是:Hello,6给出了什么?发生什么事?我该怎么阻止它呢?还有,你能解释一下你说的O1 On是什么意思吗?我不明白那是什么意思to@Tom它指的是复杂度大O表示法,作为操作成本的反映。O1是恒定时间-理想-On是线性时间-好吧,但对于如此简单的东西来说太贵了。虽然,对于小事情,你花在大脑上的时间去担心这些事情比仅仅使用字符串连接在计算上更浪费时间。
value1,value2,value3
sep = '-'
end='\n'
file=sys.stdout
print("I am a Programmer", file=open("output.txt", "w"))
flush = False
def printSleeping():
     sleep = "I'm sleeping"
     v = ""
     for i in sleep:
         v += i
         system('cls')
         print v
         time.sleep(0.02)
for i in range(20):
      print('a',end='')