Printing without newline (print 'a',) prints a space, how to remove?

我有这个密码:

>>> 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

I want to output 'a', without ' ' like this:

aaaaaaaaaaaaaaaaaaaa

有可能吗?

225255 次浏览

没有什么? 你是说

>>> 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') :

for i in xrange(20):
print '\ba',

result:

aaaaaaaaaaaaaaaaaaaa

来自 Python 2.6中的新特性文件中的 作为函数打印:

>>> from __future__ import print_function
>>> print('a', end='')

显然,这只适用于 python 3.0或更高版本(或者2.6 + ,开始时使用 from __future__ import print_function)。在 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='')

有很多方法可以达到你的目的。如果您只是想为您的情况找到一个解决方案,那么就像 @ Ant提到的那样使用 字符串乘法,字符串乘法。只有当每个 print语句输出相同的字符串时,这才会有效。注意,它适用于任意长度字符串的乘法(例如,'foo' * 20适用)。

>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa

如果您希望通常这样做,那么构建一个字符串,然后打印它一次。这将消耗字符串的一点内存,但只调用 print一次。请注意,使用 +=的字符串连接现在与要连接的字符串的大小成线性关系,因此速度会很快。

>>> for i in xrange(20):
...     s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa

或者可以更直接地使用 Sys.stdout.写()来完成,print是一个包装器。这将只写入您给出的原始字符串,而不进行任何格式化。注意,即使在20个 a的末尾也不会打印换行符。

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

Python 3将 print语句更改为 Print ()函数,这允许您设置 end参数。通过从 __future__导入,可以在 > = 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()才能在每次运行循环时强制写入字符。

顺便说一句:

打印是 O (1) ,但是构建一个字符串,然后打印是 O (n) ,其中 n 是字符串中的字符总数。所以,是的,虽然构建字符串是“干净的”,但它并不是这样做的最有效方法。

我的方法是这样的:

from sys import stdout
printf = stdout.write

现在您有了一个“ print 函数”,它可以打印出您给出的任何字符串,而不用每次返回新的行字符。

printf("Hello,")
printf("World!")

输出将是: Hello,World!

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

printf(str(2) + " " + str(4))

输出将是: 24

哇! ! !

那是很久以前的事了

现在,在 Python 3. x中这将是相当容易的

密码:

for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code

output:

aaaaaaaaaaaaaaaaaaaa

More about print() function

print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)

这里 :

value1,value2,value3

you can print multiple values using 逗号

sep = '-'

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

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

end='\n'

默认情况下,打印函数将’n’字符放在输出的末尾

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

like end='$' or end='.' or end='Hello'

file=sys.stdout

这是一个默认值,系统标准输出

使用这个参数,您可以创建一个类似

print("I am a Programmer", file=open("output.txt", "w"))

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

flush = False

It's a default value 使用 同花 = 真,您可以强制 < strong > 刷新流

就这么简单

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='')

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

在 python2中,在 print 之后添加(,) ,它将作为 python3中的 end =”。但是对于间隔空间,你还是要用 未来版的打印机。

for x in ['a','b','c','d']:
print(x),