我有这段代码:
>>> 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 :(得分:129)
有很多方法可以达到你的结果。如果您只是想要针对您的案例制定解决方案,请使用string multiplication作为@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
s的末尾也不会打印换行符。
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3将print
语句更改为print() function,允许您设置end
参数。您可以通过从__future__
导入,在> = 2.6中使用它。我会在任何严肃的2.x代码中避免这种情况,因为对于从未使用过3.x的人来说会有点混乱。但是,它应该让你体验3.x带来的一些善良。
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
答案 1 :(得分:119)
来自PEP 3105: print As a Function文档中的What’s New in Python 2.6:
>>> from __future__ import print_function
>>> print('a', end='')
显然,只适用于python 3.0或更高版本(或者开始时带有from __future__ import print_function
的2.6+)。 {@ 1}}语句已删除,默认情况下在Python 3.0中成为print
函数。
答案 2 :(得分:41)
您可以通过在print
语句之间将空字符串打印到标准输出来禁止空格。
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
但是,更简洁的解决方案是首先构建您要打印的整个字符串,然后使用单个print
语句输出它。
答案 3 :(得分:34)
您可以打印退格符('\b'
):
for i in xrange(20):
print '\ba',
结果:
aaaaaaaaaaaaaaaaaaaa
答案 4 :(得分:30)
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 :(得分:10)
如果您希望它们一次显示一个,则可以执行以下操作:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
每次循环运行时都需要 sys.stdout.flush()
强制写入字符。
答案 6 :(得分:7)
正如旁注:
打印是O(1)但是构建字符串然后打印是O(n),其中n是字符串中的字符总数。所以是的,虽然构建字符串是"更清洁",但这不是最有效的方法。
我的方式如下:
from sys import stdout
printf = stdout.write
现在你有一个"打印功能"打印出你给它的任何字符串,而不是每次都返回新的行字符。
printf("Hello,")
printf("World!")
输出结果为:Hello,World!
但是,如果要打印整数,浮点数或其他非字符串值,则必须使用str()函数将它们转换为字符串。
printf(str(2) + " " + str(4))
输出将是:2 4
答案 7 :(得分:6)
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
答案 8 :(得分:6)
答案 9 :(得分:3)
这真的很简单
对于python 3+版本,您只需编写以下代码
for i in range(20):
print('a',end='')
只需将循环转换为以下代码,您就不必担心其他事情
答案 10 :(得分:2)
<强> WOW !!! 强>
非常很长时间以前
现在,在 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 ='。'或者结束='你好'
file=sys.stdout
这是默认值,系统标准输出
使用此参数,您可以创建输出文件流,如
print("I am a Programmer", file=open("output.txt", "w"))
通过此代码,您将创建一个名为 output.txt 的文件,其中包含您的输出 我是程序员将被存储
flush = False
这是默认值 使用 flush = True ,您可以强行清除信息流
答案 11 :(得分:2)
就这么简单
Dim olApp As Object
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
If Not olApp Is Nothing Then
'run the command for sending an email
Else
'open/display the current users document folder
End If
'do some stuff...
Set olApp = Nothing