我有这个密码:
>>> 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:
'a'
' '
aaaaaaaaaaaaaaaaaaaa
有可能吗?
没有什么? 你是说
>>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa
?
无论是什么 蚂蚁 说,或累积成一个字符串,然后打印一次:
s = ''; for i in xrange(20): s += 'a' print s
可以通过在 print语句之间打印一个空字符串到 stdout 来抑制空格。
print
>>> import sys >>> for i in range(20): ... print 'a', ... sys.stdout.write('') ... aaaaaaaaaaaaaaaaaaaa
但是,一个更简洁的解决方案是首先构建要打印的整个字符串,然后用单个 print语句输出它。
可以打印退格字符('\b') :
'\b'
for i in xrange(20): print '\ba',
result:
来自 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()函数。
from __future__ import print_function
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适用)。
'foo' * 20
如果您希望通常这样做,那么构建一个字符串,然后打印它一次。这将消耗字符串的一点内存,但只调用 print一次。请注意,使用 +=的字符串连接现在与要连接的字符串的大小成线性关系,因此速度会很快。
+=
>>> for i in xrange(20): ... s += 'a' ... >>> print s aaaaaaaaaaaaaaaaaaaa
或者可以更直接地使用 Sys.stdout.写()来完成,print是一个包装器。这将只写入您给出的原始字符串,而不进行任何格式化。注意,即使在20个 a的末尾也不会打印换行符。
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 带来的好处。
end
__future__
>>> 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()才能在每次运行循环时强制写入字符。
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:
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),