【问题标题】:Print output in a single line单行打印输出
【发布时间】:2010-07-05 08:28:55
【问题描述】:

我有以下代码:

>>> 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 有何不同。

【问题讨论】:

    标签: python printing


    【解决方案1】:

    你可以使用

    打印“某事”,

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

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

    【讨论】:

    • 哇。谢谢。我把逗号放在里面。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      不需要write

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

      注意事项:

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

      【讨论】:

        【解决方案4】:
        >>> while x < y:
        ...     print '{0} / {1}, '.format(x+1, y),
        ...     x += 1
        ... 
        1 / 3,  2 / 3,  3 / 3, 
        

        注意额外的逗号。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            这是一种使用 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 前向兼容

            【讨论】:

            • 我没有使用itertools 的经验,但我打算继续阅读。谢谢你。
            猜你喜欢
            • 1970-01-01
            • 2016-08-30
            • 2020-02-27
            • 2015-09-29
            • 1970-01-01
            • 2022-01-07
            • 1970-01-01
            • 2020-04-29
            • 2011-10-22
            相关资源
            最近更新 更多