>>> print("x\by")
y
print("a", end="")
print("a", end="")
print("a", end="")
print("h", end="")
aaah
但是有多个打印语句,我得到了这个输出 -
print("a\b", end="")
print("a\b", end="")
print("a\b", end="")
print("h\b", end="")
a a a h
为什么在每个角色后打印额外的空间。
从Windows命令行执行代码时,代码运行正常,我在Pycharm的控制台中进行了测试。
但是在python repl中,\b
会删除前一个字符,而它应该向后移动光标。
>>> print("a\b", end="")
>>>
答案 0 :(得分:4)
每个终端或控制台都可以自由地处理\b
字符。所有Python都可以将数据写出sys.stdout
。
在这里,您正在使用的控制台将向前移动光标以进行单独的写入调用,它会出现。并且\b
字符不会删除控制台中的任何内容,它只会将光标移回同一个写调用中的 。
因此,对于print('x\by', end='')
控制台输出x
,向后移动一步,在同一位置输出y
,现在已经记录它写了3个字符,所以输出位置是设置为第3列。下一个print()
将开始从该新位置输出数据。
您的print()
代码恰好适用于大多数终端或控制台,因为大多数终端或控制台都不关心您输出的字符数,只关注光标当前所在的位置。但是你有一个行为不同的控制台是而不是Python的错误。
使用Python交互式解释器时,请考虑 it too 打印;所以使用print("a\b", end="")
离开Python然后用下一个>>>
提示覆盖该行:
>>> print("a\b", end="")
>>>
改为使用print("a\b\n", end="")
,您会看到a
仍然存在:
>>> print("a\b\n", end="")
a
答案 1 :(得分:0)
flush = True是正确的答案
如果您实际在python控制台中打印,则flush参数首先打印出结果,然后完成该功能。在多个转义字符的情况下,您应该看到退格或任何其他打印输出。发生这种情况的原因并不为我所知,因为我刚开始使用Python,但经过彻底的研究和实验后,我发现它是真的。
答案 2 :(得分:-2)
写到最后
Flush=true
我认为这是问题尝试并在这里写下输出会有什么,因为现在我无法测试它。(从手机写)