Printing without newline (print 'a',) prints a space, how to remove?
我有这个代码:
1 2 3 4 | >>> 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 |
我想输出
1 | aaaaaaaaaaaaaaaaaaaa |
可能吗?
有很多方法可以达到你的结果。如果您只是想为您的案例寻找解决方案,请使用字符串乘法作为@Ant提及。只有在每个
1 2 | >>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa |
如果您想要执行此操作,请构建一个字符串然后再打印一次。这将占用字符串的一些内存,但只能对
1 2 3 4 5 | >>> for i in xrange(20): ... s += 'a' ... >>> print s aaaaaaaaaaaaaaaaaaaa |
或者你可以使用sys.stdout.write()更直接地完成它,
1 2 3 4 5 | >>> import sys >>> for i in xrange(20): ... sys.stdout.write('a') ... aaaaaaaaaaaaaaaaaaaa>>> |
Python 3将
1 2 3 4 5 | >>> from __future__ import print_function >>> for i in xrange(20): ... print('a', end='') ... aaaaaaaaaaaaaaaaaaaa>>> |
从PEP 3105:打印作为Python 2.6文档中的新功能:
1 2 | >>> from __future__ import print_function >>> print('a', end='') |
显然,只适用于python 3.0或更高版本(或2.6+,开头为
您可以通过在
1 2 3 4 5 6 | >>> import sys >>> for i in range(20): ... print 'a', ... sys.stdout.write('') ... aaaaaaaaaaaaaaaaaaaa |
但是,更简洁的解决方案是首先构建您要打印的整个字符串,然后使用单个
您可以打印退格符(
1 2 | for i in xrange(20): print '\ba', |
结果:
1 | aaaaaaaaaaaaaaaaaaaa |
Python 3.x:
1 2 | for i in range(20): print('a', end='') |
Python 2.6或2.7:
1 2 3 | from __future__ import print_function for i in xrange(20): print('a', end='') |
如果您希望它们一次显示一个,您可以这样做:
1 2 3 4 5 6 | import time import sys for i in range(20): sys.stdout.write('a') sys.stdout.flush() time.sleep(0.5) |
每次循环运行时都需要
正如旁注:
打印是O(1)但是构建一个字符串然后打印是O(n),其中n是字符串中的字符总数。所以是的,虽然构建字符串是"更干净",但这不是最有效的方法。
我这样做的方式如下:
1 2 | from sys import stdout printf = stdout.write |
现在你有一个"打印功能",它打印出你给它的任何字符串,而不是每次都返回新的行字符。
1 2 | printf("Hello,") printf("World!") |
输出将是:Hello,World!
但是,如果要打印整数,浮点数或其他非字符串值,则必须使用str()函数将它们转换为字符串。
1 | printf(str(2) +"" + str(4)) |
输出将是:2 4
无论是Ant说什么,还是累积成一个字符串,然后打印一次:
1 2 3 4 | s = ''; for i in xrange(20): s += 'a' print s |
没有什么?
你的意思是
1 2 | >>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa |
?
这很简单
对于python 3+版本,您只需编写以下代码
1 2 | for i in range(20): print('a',end='') |
只需将循环转换为以下代码,您就不必担心其他事情
就如此容易
1 2 3 4 5 6 7 8 | def printSleeping(): sleep ="I'm sleeping" v ="" for i in sleep: v += i system('cls') print v time.sleep(0.02) |
哇!!!
很久以前
现在,在python 3.x中,它将非常简单
码:
1 2 3 | for i in range(20): print('a',end='') # here end variable will clarify what you want in # end of the code |
输出:
1 | aaaaaaaaaaaaaaaaaaaa |
有关print()函数的更多信息
1 2 | print(value1,value2,value3,sep='-',end=' ',file=sys.stdout,flush=False) |
这里:
1 | value1,value2,value3 |
您可以使用逗号打印多个值
1 | sep = '-' |
3个值将以" -"字符分隔
你可以使用任何字符而不是像sep ='@'或sep ='good'那样的字符串
1 2 | end=' ' |
默认打印功能将' n'字符放在输出的末尾
但您可以通过更改结束变量值来使用任何字符或字符串
比如end ='$'或者end ='。'或者结束='你好'
1 | file=sys.stdout |
这是默认值,系统标准输出
使用此参数可以创建类似的输出文件流
1 | print("I am a Programmer", file=open("output.txt","w")) |
通过此代码,您将创建一个名为output.txt的文件,其中包含您的输出
我是一名程序员将被存储
1 | flush = False |
这是默认值
使用flush = True可以强制刷新流