我想做一个加载屏幕,每秒,它打印a
,b
,或c
一个接一个(取代前一个),并再次启动。这就是我所尝试的,但它不起作用。它每秒只打印a
:
from time import sleep
for i in range(10):
sleep(1)
print(next(iter(['\ra', '\rb', '\rc'])), end=' ')
发布于 2019-11-12 16:04:56
您需要在循环外部创建对象,否则它将每秒重新创建一次,因此您总是只获得第一个元素:
import itertools
from time import sleep
progress = itertools.cycle(['\ra', '\rb', '\rc'])
for i in range(10):
sleep(1)
print(next(progress), end=' ')
您也可以(也许应该)像我在这里所做的那样使用itertools.cycle
,使选项在列表结束时循环回到开始。
发布于 2019-11-12 16:04:44
您将在每次迭代中重新创建生成器。你可以在这里使用itertools.cycle
在生成器中循环:
from itertools import cycle
from time import sleep
l = cycle(['\ra', '\rb', '\rc'])
for i in range(10):
sleep(1)
print(next(l), end=' ')
https://stackoverflow.com/questions/58822389
复制