【问题标题】:Printing on only one line [duplicate]仅打印一行[重复]
【发布时间】:2019-12-11 22:22:32
【问题描述】:

我有一个程序只能在一行上打印数据。

我该怎么做呢。

for i in range(10):
    print(i)

是否可以将所有这些都打印在一行上,以便打印 0、擦除该行、打印 2、擦除等。

【问题讨论】:

  • 是的,发帖前你搜索过什么吗?
  • 请使用 end=""
  • Python 2.x 还是 3.x?
  • 他在打印中使用 (),所以我假设 3x

标签: python printing


【解决方案1】:

使用print(i,end="\r") 返回到行首并覆盖。

【讨论】:

    【解决方案2】:
    for i in range(10):
        print(i,end=" ")
    

    这是在一行中打印的最简单方法。

    【讨论】:

      【解决方案3】:

      在 python 2.x 中:

      from __future__ import print_function
      for i in range(10):
          print (i, end="")
      

      在 python 3.x 中

      for i in range(10):
          print (i, end="")
      

      【讨论】:

        【解决方案4】:

        对于这个特定的用例,您可以执行以下操作:

        print(*range(10))
        

        要更新行中的每个字符,您需要使用'\r' 或返回字符,它将光标的位置返回到行首。但是,您需要确保计算正在打印的字符串的长度,否则您将只覆盖字符串的一部分。完整的证明解决方案是:

        import time
        maxlen = 0
        for i in range(12,-1,-1):
          if len(str(i))>maxlen:
            maxlen = len(str(i))
          print(f'\r{str(i): <{maxlen}}',end = '')
          time.sleep(2)
        print('')
        

        time 部分已添加,以便您可以查看更改。 maxlen 计算您要打印的最大长度字符串并相应地格式化字符串。注意:我使用了 f'strings,因此它只适用于 Python 3.x

        【讨论】:

          猜你喜欢
          • 2012-05-16
          • 1970-01-01
          • 1970-01-01
          • 2017-02-07
          • 1970-01-01
          • 2012-09-25
          • 2015-10-27
          • 2020-06-05
          • 1970-01-01
          相关资源
          最近更新 更多