2010-07-05 183 views
6

我有以下代码:打印输出

>>> 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

可以使用

打印 “东西”,

(后面有个逗号,不增加一个新行),所以 试试这个

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

哇。谢谢。我把逗号放在里面。 – user225312 2010-07-05 08:35:26

2

无需为write

如果你在打印语句后面加上尾部逗号,你会得到你所需要的。

注意事项:

  • 您需要在最后,如果你想下一个文本继续在新行添加一个空白的print语句。
  • 在Python 3.x中可能会有所不同
  • 总是会至少添加一个空格作为分隔符。在这种情况下,这是可以的,因为无论如何你都需要一个空格来分隔它。
2
>>> while x < y: 
...  print '{0}/{1}, '.format(x+1, y), 
...  x += 1 
... 
1/3, 2/3, 3/3, 

注意额外的逗号。

3

我认为sys.stdout.write()将被罚款,但在Python 2的标准方法是print有后面的逗号,如MB14建议。如果您在使用Python 2.6+,并希望成为向上兼容到Python 3,你可以使用新的print功能它提供了一个更可读的语法:

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

您可以在打印结束使用,声明。


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

-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兼容。

+0

我没有'itertools'的经验,但我打算读。谢谢你。 – user225312 2010-07-05 09:23:19