用于循环的python for end =' '造成问题

时间:2018-02-09 17:55:39

标签: python for-loop

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)

有人可以告诉我为什么在else语句下,它会在运行&#34; for i in range(1,initial_num2 + 1)之前睡15秒:&#34;循环?我唯一能想到的是&#34; end =&#39; &#39;&#34;导致问题,因为我试图在同一行上打印循环。

1 个答案:

答案 0 :(得分:1)

  1. Python print function被缓冲,这意味着它有时会等到内部缓冲区在打印前填满数据。在将缓冲区刷新到控制台之前,它通常会等到它看到换行符,因此当您编写非常长的文本行(即文本中没有任何换行符)时,缓冲尤其明显。
  2. end参数告诉print函数不使用换行符来终止文本,而是使用你提供的任何内容。
  3. 因为你要抑制换行符,所以Python不知道如何刷新你给print函数的文本,直到程序在sleep调用后终止。您可以通过将flush=True添加到传递的参数列表中来强制刷新打印缓冲区。

    同时查看this answerthis one