超出范围时重新开始列表


import time
from random import *
import random
rand = random.uniform(0.1,1)
letters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

run = input("Start? > ")
mins = 0
if run == "start":
    while mins != 60:
        print (">", letters[mins])
        time.sleep(rand)
        mins += 1

我希望列表一遍又一遍地开始,直到"分钟"达到 60。

一个简单的解决方案可能是尝试将索引更改为以下内容:

print (">", letters[mins%len(letters)])

%函数返回除法运算的其余部分。因此,在这种情况下,一旦 mins 大于列表的长度,它就会在索引 0 处"重新开始"。

你也可以使用itertools.cycle .

itertools.cycle(iterable)

创建一个迭代器,从可迭代对象返回元素并保存每个元素的副本。当可迭代对象用尽时,从保存的副本中返回元素。 无限期重复。

而不是输入字母表的所有(小写(字母,您可以使用字符串常量string.ascii_lowercase .

import time
from itertools import cycle
from random import uniform
from string import ascii_lowercase
rand = uniform(0.1, 1) 
run = input("Start? > ")
if run == "start":
    for letter, _ in zip(cycle(ascii_lowercase), range(60)):
        print(">", letter)
        time.sleep(rand)

最新更新