2010-07-05 214 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