代码之家  ›  专栏  ›  技术社区  ›  user225312

单行打印输出

  •  6
  • user225312  · 技术社区  · 14 年前

    >>> 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 回复  |  直到 14 年前
        1
  •  6
  •   mb14    14 年前

    你可以用

    (后面有逗号,不插入换行符),所以

    ... print '{0} / {1}, '.format(x+1, y), #<= with a ,
    
        2
  •  3
  •   Philipp    14 年前

    我认为 sys.stdout.write() print mb14型 功能

    from __future__ import print_function
    print("Hello World", end="")
    
        3
  •  2
  •   Oddthinking    14 年前

    不需要 write .

    如果在print语句后面加一个逗号,就可以得到所需的内容。

    • 如果希望下一个文本在新行上继续,则需要在末尾添加一个空白打印语句。
    • 将始终至少添加一个空格作为分隔符。在这种情况下,这是好的,因为你想要一个空格来分隔它。
        4
  •  2
  •   Mad Scientist    14 年前
    >>> while x < y:
    ...     print '{0} / {1}, '.format(x+1, y),
    ...     x += 1
    ... 
    1 / 3,  2 / 3,  3 / 3, 
    

    注意附加的逗号。

        5
  •  2
  •   bhups    14 年前

    ,

    
    while x<y:
        print '{0} / {1}, '.format(x+1, y) ,
        x += 1
    
    this
        6
  •  -1
  •   John La Rooy    14 年前

    下面是一种使用itertools实现所需功能的方法。这对于Python3来说也可以,在Python3中,print成为一个函数

    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向前兼容