带有 end= 的 python for 循环导致问题


if (ans1 == answerkey):
    print ("Correct. Good Job!!")
    right += 1
else:
    print ('Good try, here is the correct answers.')
    x = answerkey
    for i in range(1,initial_num2+1):
        if (i == x):
            print('[ >{}< ]'.format(i), end=' ')
        else:
            print('[{}]'.format(i), end=' ')
wrong += 1
time.sleep(15)

有人可以告诉我为什么在其他陈述下,它会在运行"在范围内的i(1,initial_num2 1(之前睡15秒钟:"循环?我唯一能想到的是引起问题的" end =''",因为我试图在同一行上打印循环。

  1. Python的print功能已缓冲,这意味着它有时会等到其内部缓冲区在打印之前填充数据。它通常等到它看到一个newline字符,然后将缓冲区冲入控制台之前,因此当您编写很长的文本线(即,其中没有任何newline字符的文本(时,缓冲尤为明显。
  2. end参数告诉print函数不使用newline字符终止文本,而是使用您提供的任何东西。

由于您正在抑制newline字符,所以Python不知道要冲洗给print功能的文本,直到程序在sleep调用后终止。您可以通过将flush=True添加到参数列表中,将打印缓冲区施加。

请参阅此答案,也请参见此答案。

最新更新