循环播放单个字符

时间:2013-11-01 15:46:07

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

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

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?")

直到系统暂停后才打印我的信息。为什么在暂停之前不打印“是”?看起来print()函数有一些隐藏的工作方式比我不理解。有人有解释吗?

1 个答案:

答案 0 :(得分:1)

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

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