首页 > 解决方案 > 为什么 Pycharm 和 VS Code 给我不同的回车打印结果?

问题描述

我正在尝试在 Pycharm 和 VS Code 中运行以下代码。

for x in range(10000, 0, -1):
  print(x, end='\r')
print()

在 Pycharm 中,我得到了这个结果。

但是,在 VS Code 中,我得到了这个结果。回车在两者中的行为不同。

有人可以解释为什么吗?

标签: python-3.xprintingcarriage-returnpython-3.9

解决方案


这是每个控制台实现的一个怪癖。PyCharm,或者至少是您的版本,在\r打印时可能会清除整行,而 VSCode(以及我测试过的所有其他控制台,包括 PowerShell 和 Cygwin)仅在开头设置插入点。

我们10000在这些其他控制台中看到的原因是因为每次数字少一位之前打印的最后一个数字是10...0. 例如:

  • x == 10000处,打印 10000 并将光标设置回行首。
  • 打印9999,最后不覆盖0,离开99990
  • 然后99980,然后99970,等等。
  • ...
  • x == 1000,电流输出为10010。打印后,再次输出10000
  • 然后99900,99800等。
  • ...
  • x == 1,电流输出为20000。打印后,10000再次输出。这是最后一个打印的数字,所以你看到了10000

如果您想覆盖整个数字,一种解决方案就是用空格覆盖它,如下所示:

for x in range(10000, 0, -1):
    print(x, end='    \r')
print()

PS:对于完全不同的东西,很多在线程序运行者只会把它\r当作换行符(例如TIO和Ideone),打印所有的数字。


推荐阅读