【发布时间】:2018-11-19 03:11:18
【问题描述】:
我是初学者,正在学习非常基本的技能。
我正在为 Windows 的命令行制作一个简单的文本游戏,并且有一个功能可以让用户阅读最新的语句,并通过像 Ctrl-C 一样引起 KeyboardInterrupt 来跳过它。
from time import sleep
def wait(seconds):
try:
sleep(seconds)
except KeyboardInterrupt:
pass
return
当我想打印一些东西并且之后没有换行符时,就会出现问题。在这种情况下,wait() 函数将在 print() 函数之前执行
# functions properly, but has unwanted newline
print("test", end='test\n')
wait(3)
# in windows CMD, wait() executes before print()
print("test", end='test')
wait(3)
我知道有一些方法可以解决这个问题,比如使用 TKinter,但我想知道为什么会发生这种情况,而不是如何完全避免它。
编辑:我一直在搜索,发现问题不是 try except 块,而是 sleep(): Error with Print and Sleep in Python 答案副本:
你应该使用:
print (a, end="", flush=True)
因为控制台输出是行缓冲的。
【问题讨论】:
-
我无法用你的例子复制这个。通过这两种方式,
\n和没有\n它以预期的顺序执行,打印然后等待,对我来说。 -
我正在阅读并准备回答,然后看到您已经找到了答案:)。既然你想通了,你应该发布你的问题的答案; it's very much allowed!欢迎来到 Stack Overflow!
标签: python python-3.x printing try-except