【问题标题】:How does the carriage return works in Python?回车在 Python 中是如何工作的?
【发布时间】:2020-12-27 04:24:11
【问题描述】:

我正在按照 Youtube 视频的步骤进行倒计时,但有一件事我不明白,那就是在 print (time_left + '\r', end = '') 行中使用回车 \r 如何与 end = '' 一起工作能够擦除同一行并再次写入吗?因为如果我只写\r,数字就会出现在新行中。

while True:
     uin = input('')
     try:
          when_to_stop = abs(int(uin))
     except KeyboardInterrupt:
          break
     except:
          print('That\'s not a number')
     while when_to_stop > 0:

          m, s = divmod(when_to_stop, 60) 
          h, m = divmod(m, 60)
          when_to_stop = when_to_stop - 1
          time_left = str(h).zfill(2)+ ':' + str(m).zfill(2) + ':' + str(s).zfill(2)
          print(time_left + '\r',  end = '')
          time.sleep(1)

【问题讨论】:

  • @L3viathan:这是一个完整的答案,不妨把它变成一个。

标签: python-3.x time


【解决方案1】:

print 打印其所有参数,由关键字参数sep 分隔,由参数end 终止:

>>> print(1, 2, 3, sep="+", end="=\n")
1+2+3=

默认sep是空格,end"\n";换行。通过执行end='',您可以防止此换行,这样回车可以将光标移动到行首。


如果您只使用print("\r"),则会打印回车换行。这在实践中与只做print() 相同;只打印一个换行符。

【讨论】:

  • 所以\r 只将光标移动到行首,但是end = ' ' 擦除了所有行?
  • end=' '(有一个空格)只删除一个字符。如果您打印更多空格,它将删除更多的行。如果您打印其他内容,它将覆盖该行。想想旧打字机的回车(没有换行),除了任何按键在打印字符之前首先将点涂成白色。
  • 那么end = ''没有空格会自动擦除所有行吗?但如果我写:a = 0 for a in range (5): print('Banana' + '\r', end = '') 它会给出nana。抱歉,我对 Python 还很陌生。
  • @KIRA 你碰巧在 Windows 上吗?因为在我的电脑上,那只是打印“香蕉”。 (旁注:你不需要在循环之前声明a = 0。)
  • 是的,我愿意。我写在repl.it上
猜你喜欢
  • 2013-09-12
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多