python-3.x - 为什么 Pycharm 和 VS Code 给我不同的回车打印结果?
问题描述
我正在尝试在 Pycharm 和 VS Code 中运行以下代码。
for x in range(10000, 0, -1):
print(x, end='\r')
print()
在 Pycharm 中,我得到了这个结果。
但是,在 VS Code 中,我得到了这个结果。回车在两者中的行为不同。
有人可以解释为什么吗?
解决方案
这是每个控制台实现的一个怪癖。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),打印所有的数字。
推荐阅读
- blazor - Blazor wasm cookie 身份验证
- excel - 无法删除包含旧数据的单元格以便为新数据让路
- list - 有没有办法在flutter firebase中查询文档中的整个列表?
- python - 制作 pyplot Slider 时出错:“元组”对象没有属性“名称”
- javascript - Vue:将更改事件绑定到动态插入的内容
- javascript - 为什么我们可以使用不带名字的 let ?
- sql - 如何计算两个具有不同值、不同时间的 BigQuery 记录之间的时间
- css - 如何将 React 中的元素滚动到容器内的特定位置?
- python - 我想要一个正确的方法在我的新 Linux 上安装 OSMnx
- c++ - OpenCV 重新映射 BORDER_CONSTANT 问题