Mar*_*ans 5 python pycharm python-3.x
>>> print("x\by")
y
print("a", end="")
print("a", end="")
print("a", end="")
print("h", end="")
aaah
Run Code Online (Sandbox Code Playgroud)
但是通过多个打印语句,我得到了这个输出 -
print("a\b", end="")
print("a\b", end="")
print("a\b", end="")
print("h\b", end="")
a a a h
Run Code Online (Sandbox Code Playgroud)
为什么在每个字符后打印额外的空格。
从 Windows 命令行执行时,代码运行良好,我在 Pycharm 的控制台中对其进行了测试。
但是在 python repl 中,\b当它应该将光标向后移动一个字符时,它会擦除前一个字符。
>>> print("a\b", end="")
>>>
Run Code Online (Sandbox Code Playgroud)
每个终端或控制台都可以自由地以\b不同的方式处理字符。Python 所能做的就是将数据写出到sys.stdout.
在这里,您使用的控制台会将光标向前移动以进行单独的写入调用,它出现了。并且\b字符不会擦除控制台中的任何内容,它只是将光标移回同一个 write call 中的一个位置。
所以对于print('x\by', end='')console输出x,往后退一步,y在同一个地方输出,现在已经记录了写了3个字符,所以输出位置设置为第3列。 next将从那个新位置print()开始输出数据。
您的print()代码恰好适用于大多数终端或控制台,因为其中大多数不关心您输出的字符数,只关心当前光标所在的位置。但是你有一个行为不同的控制台并不是 Python 的错。
使用 Python 交互式解释器时,要考虑到它也会打印;所以使用print("a\b", end="")叶 Python 然后用下一个>>>提示覆盖该行:
>>> print("a\b", end="")
>>>
Run Code Online (Sandbox Code Playgroud)
print("a\b\n", end="")改为使用,您会看到a仍然存在:
>>> print("a\b\n", end="")
a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3042 次 |
| 最近记录: |