以单行打印输出

时间:2010-07-05 08:28:56

标签: python printing

我有以下代码:

>>> x = 0
>>> y = 3
>>> while x < y:
    ... print '{0} / {1}, '.format(x+1, y)
    ... x += 1

输出:

1 / 3, 
2 / 3, 
3 / 3, 

我希望输出如下:

1 / 3, 2 / 3, 3 / 3 

我搜索并发现在一行中执行此操作的方法是:

sys.stdout.write('{0} / {1}, '.format(x+1, y))

还有另一种方法吗?我对sys.stdout.write()感到不舒服,因为我不知道它与print有什么不同。

6 个答案:

答案 0 :(得分:6)

你可以使用

  

打印“东西”,

(带尾随逗号,不插入换行符),所以 试试这个

... print '{0} / {1}, '.format(x+1, y), #<= with a ,

答案 1 :(得分:3)

我认为sys.stdout.write()会很好,但是Python 2中的标准方式是print,并带有一个尾随逗号,如 mb14 所示。如果您使用的是Python 2.6+并希望向上兼容Python 3,则可以使用新的print 函数,它提供了更易读的语法:

from __future__ import print_function
print("Hello World", end="")

答案 2 :(得分:2)

无需write

如果你在print语句后加上一个逗号,你就会得到你需要的东西。

注意事项:

  • 如果您希望下一个文本在新行上继续,则需要在末尾添加空白打印声明。
  • 在Python 3.x中可能有所不同
  • 将始终至少添加一个空格作为分隔符。在这种情况下,这没关系,因为无论如何你想要一个空格分开它。

答案 3 :(得分:2)

>>> while x < y:
...     print '{0} / {1}, '.format(x+1, y),
...     x += 1
... 
1 / 3,  2 / 3,  3 / 3, 

注意额外的逗号。

答案 4 :(得分:2)

您可以在print语句的末尾使用,


while x<y:
    print '{0} / {1}, '.format(x+1, y) ,
    x += 1
您可以进一步阅读this

答案 5 :(得分:-1)

这是一种使用itertools实现您想要的方法。这对于打印成为函数的Python3也是可行的

from itertools import count, takewhile
y=3
print(", ".join("{0} /  {1}".format(x,y) for x in takewhile(lambda x: x<=y,count(1))))

您可能会发现以下方法更容易理解

y=3
items_to_print = []
for x in range(y):
    items_to_print.append("{0} /  {1}".format(x+1, y))
print(", ".join(items_to_print))

使用带有逗号的逗号print的问题是,最后会得到一个额外的逗号,而且没有换行符。这也意味着你必须有单独的代码才能与python3

向前兼容