Python中FOR循环内sleep函数无法逐次计数输出问题求助
解决Python倒计时一次性输出问题
问题出在Python的标准输出缓冲机制上:默认情况下,print函数在输出内容未换行时,会把内容暂存在输出缓冲区里,不会立刻打印到终端。你用了end=''避免换行,导致所有数字都被缓冲,直到程序结束才一次性输出。
解决方法
在print函数中添加flush=True参数,强制刷新输出缓冲区,让数字实时显示:
import closed from time import sleep class Countdown: def __init__(self): pass def Count(self): for counter in range(10,-1,-1): print(f'{counter} ', end='', flush=True) sleep(1) return 'Finished Counting!' countdown = Countdown() print(countdown.Count())
其他可选方案
如果不想修改print参数,也可以手动导入sys模块,在每次print后主动刷新缓冲区:
import closed import sys from time import sleep class Countdown: def __init__(self): pass def Count(self): for counter in range(10,-1,-1): print(f'{counter} ', end='') sys.stdout.flush() sleep(1) return 'Finished Counting!' countdown = Countdown() print(countdown.Count())
内容的提问来源于stack exchange,提问作者Sérgio Lima
相关产品推荐
相关产品推荐

