问题:不带换行符的打印(print’a’,)打印空格,如何删除?
我有此代码:
>>> 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
可能吗?
回答 0
有多种方法可以实现您的结果。如果你只是想为你的情况的解决方案,使用字符串倍增为@Ant提到。仅当您的每个print
语句都打印相同的字符串时,这才起作用。请注意,它适用于任何长度字符串的乘法(例如,'foo' * 20
有效)。
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
如果通常要这样做,请构建一个字符串,然后将其打印一次。这将为该字符串消耗一些内存,但是仅对进行一次调用print
。请注意,+=
现在使用的字符串串联使用的大小与您串联的字符串大小成线性关系,因此此操作很快。
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
或者,您可以使用sys.stdout更直接地进行操作。write(),这print
是一个包装器。这将只写入您提供的原始字符串,而不进行任何格式化。请注意,即使在20 a
秒结束时也不会打印换行符。
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3将print
语句更改为print()函数,该函数允许您设置end
参数。通过从中导入,可以在> = 2.6中使用它__future__
。不过,我会避免在任何严重的2.x代码中使用此方法,因为对于从未使用过3.x的用户来说,这会有些混乱。但是,它应该使您体会3.x带来的一些好处。
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
回答 1
从PEP 3105:Python 2.6新增功能文档中的作为函数打印:
>>> from __future__ import print_function
>>> print('a', end='')
显然,这仅适用于python 3.0或更高版本(或2.6+以from __future__ import print_function
开头)。该print
语句已删除,并print()
在Python 3.0中默认成为函数。
回答 2
您可以通过在print
语句之间将空字符串打印到stdout来抑制空格。
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
但是,更干净的解决方案是首先构建您要打印的整个字符串,然后使用单个print
语句将其输出。
回答 3
您可以打印一个退格字符('\b'
):
for i in xrange(20):
print '\ba',
结果:
aaaaaaaaaaaaaaaaaaaa
回答 4
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='')
回答 5
如果希望他们一次显示一个,则可以执行以下操作:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
必须在每次运行循环时强制写入字符。
回答 6
恰如其分:
打印为O(1),但先构建一个字符串,然后打印为O(n),其中n是字符串中字符的总数。因此,是的,尽管构建字符串是“更干净的”,但这并不是最有效的方法。
我的操作方式如下:
from sys import stdout
printf = stdout.write
现在,您有了一个“打印功能”,可以打印出您给它的任何字符串,而无需每次都返回换行符。
printf("Hello,")
printf("World!")
输出将是:世界,您好!
但是,如果要打印整数,浮点数或其他非字符串值,则必须使用str()函数将它们转换为字符串。
printf(str(2) + " " + str(4))
输出将是:2 4
回答 7
回答 8
没有什么?你的意思是
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
?
回答 9
这真的很简单
对于python 3+版本,您只需要编写以下代码
for i in range(20):
print('a',end='')
只需将循环转换为以下代码,您就不必担心其他事情
回答 10
哇!!!
这是相当长一段时间前
现在,在python 3.x中,这将非常容易
码:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
输出:
aaaaaaaaaaaaaaaaaaaa
有关print()函数的更多信息
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
在这里:
value1,value2,value3
您可以使用逗号打印多个值
sep = '-'
3个值将以’-‘字符分隔
您可以使用任何字符来代替甚至像sep =’@’或sep =’good’这样的字符串
end='\n'
默认情况下,打印功能将’\ n’字符放在输出末尾
但是您可以通过更改最终变量值来使用任何字符或字符串
例如end =’$’或end =’。或end =’Hello’
file=sys.stdout
这是默认值,系统标准输出
使用此参数,您可以创建输出文件流,例如
print("I am a Programmer", file=open("output.txt", "w"))
通过此代码,您将创建一个名为output.txt的文件,其中将存储您作为程序员的输出
flush = False
这是使用flush = True的默认值,您可以强制刷新流
回答 11
就如此容易
def printSleeping():
sleep = "I'm sleeping"
v = ""
for i in sleep:
v += i
system('cls')
print v
time.sleep(0.02)