【问题标题】:Python 3.7.1 try except block happening in wrong order in command linePython 3.7.1 尝试除了在命令行中以错误顺序发生的块
【发布时间】: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


【解决方案1】:

我同意你的回答。你应该使用:

print(a, end="", flush=True)

因为控制台输出是行缓冲的。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 2022-01-21
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多