【问题标题】:Print single character at a time in loop在循环中一次打印单个字符
【发布时间】:2013-11-01 15:46:06
【问题描述】:

我想一次打印一行中的字符。这段代码最终做的是一次读取一个字符(每个字符之间有一个暂停,所以我知道它正在正确地遍历字符)然后当它完成该行时,它将打印所有字符一次。

for line in lines:
    for ch in line:
        print(ch, end = ' ')
        os.system("pause")

但是,如果我这样做:

for line in lines:
    for ch in line:
        print(ch, end = '\n') #same effect as print(ch)
        os.system("pause")

它将打印一个带有换行符的字符,然后是系统暂停。

为什么它在第一种情况下不能正确打印,但在第二种情况下可以工作?

另外,我只是进行了随机测试:

print ("is", end=' ')
os.system("pause")
print("newline?")

直到系统暂停后它才打印我的消息。为什么在暂停之前没有打印“is”?似乎 print() 函数有一些我不理解的隐藏工作原理。有人解释一下吗?

【问题讨论】:

    标签: python python-3.x printing syntax whitespace


    【解决方案1】:

    您的输出正在被缓冲:输出会一直保留到发送换行符为止,因为一次打印一行比一次打印一个字符更有效。

    如果你愿意,你可以在每个print() 后面加上sys.stdout.flush()Other solutions here。就个人而言,我有点喜欢包装纸。您可以将其与上下文管理器结合使用,该管理器在 with 块中设置和恢复 stdout 以获得最大的 Pythonicity。

    【讨论】:

    • 先生,您是一位绅士和一位学者。在我运行随机测试后,我发现缓冲区有问题。感谢您的回答,我会尽快标记。
    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多