打印没有换行(打印'a')打印空间,如何删除?
我有这个代码:
>>> for i in xrange(20): ... print 'a', ... aaaaaaaaaaaaaaaaaaaa  我想要输出'a' ,而' '像这样: 
 aaaaaaaaaaaaaaaaaaaa 
可能吗?
 有很多方法可以实现你的结果。 如果你只是想为你的情况的解决scheme,使用string乘法 @Ant提到。 如果每个print语句打印相同的string,这只会起作用。 请注意,它适用于任何长度string的乘法(例如'foo' * 20作品)。 
 >>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa 
 如果你想这样做一般,build立一个string,然后打印一次。 这将消耗一些string的内存,但只打一个电话print 。 请注意,使用+=string连接现在与要连接的string的大小成线性关系,因此这将很快。 
 >>> for i in xrange(20): ... s += 'a' ... >>> print s aaaaaaaaaaaaaaaaaaaa 
 或者你可以更直接地使用sys.stdout 。  写() ,哪个print是一个包装。 这将只写入你给它的原始string,没有任何格式。 请注意,即使在20s结束时也不会打印换行符。 
 >>> import sys >>> for i in xrange(20): ... sys.stdout.write('a') ... aaaaaaaaaaaaaaaaaaaa>>> 
  Python 3将print语句更改为print()函数 ,该函数允许您设置end参数。 您可以通过从__future__导入来在> = 2.6中使用它。 尽pipe如此,我仍然会避免使用任何严重的2.x代码,因为对于那些从未使用过3.x的用户来说,这会有些困惑。 但是,它应该给你一些善良3.x带来的味道。 
 >>> from __future__ import print_function >>> for i in xrange(20): ... print('a', end='') ... aaaaaaaaaaaaaaaaaaaa>>> 
从http://docs.python.org/whatsnew/2.6.html#pep-3105-print-as-a-function
 >>> from __future__ import print_function >>> print('a', end='') 
显然,只适用于Python 2.6或更高版本。
 可以通过在print语句之间打印一个空string到stdout来压缩空间。 
 >>> import sys >>> for i in range(20): ... print 'a', ... sys.stdout.write('') ... aaaaaaaaaaaaaaaaaaaa 
 然而,一个更清洁的解决scheme是首先构build你想要打印的整个string,然后用一个print语句输出它。 
 您可以打印退格字符( '\b' ): 
 for i in xrange(20): print '\ba', 
结果:
 aaaaaaaaaaaaaaaaaaaa 
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='') 
如果你想让他们每次出现一个,你可以这样做:
 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),但build立一个string,然后打印是O(n),其中n是string中的字符总数。 所以是的,当build立string是“更清洁”,这不是最有效的方法。
我会这样做的方式如下:
 from sys import stdout printf = stdout.write 
现在你有一个“打印function”,打印出你所给的任何string,而不用每次都返回新的行字符。
 printf("Hello,") printf("World!") 
输出将是:你好,世界!
但是,如果要打印整数,浮点数或其他非string值,则必须使用str()函数将它们转换为string。
 printf(str(2) + " " + str(4)) 
输出将是:2 4
无论是ant 说 ,还是积累成一个string,然后打印一次:
 s = ''; for i in xrange(20): s += 'a' print s 
没有什么? 你的意思是
 >>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa 
?