【发布时间】:2019-12-17 19:04:34
【问题描述】:
我正在学习 python,我编写了一个程序来选择一个随机的办公室剧集来观看,我的程序有 75% 的时间可以正常工作,但另外 25% 的时候,它给了我错误:
列表索引超出范围。
我尝试弄乱选择剧集的行中的最小最大值
import random as r
seasons = [
[1, 2, 3, 4, 5, 5, 6],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
]
def choose_ep():
global seasons
s = r.randint(1,10) # 1 - 10, not including 10
e = r.randint(min(seasons[s - 1]), max(seasons[s - 1]))
print("Season: " + str(s) + ", Episode: " + str(e))
while True:
choose_ep()
if input() == "exit":
break
我希望它给我一个随机季节的随机剧集。我不希望它给我一个像“第 1 季第 14 集”这样不存在的剧集
【问题讨论】:
-
r.randint(1, 10) 给出一个介于 1 和 10 之间的随机整数,这与给出 1 和 9 之间的范围的 range(1, 10) 相比可能会令人困惑。我注意到您的代码中的注释说您故意将最大值设置为 10,但您需要将其设置为 9。(我在 s= 行之后放置了一个 print(s) 以查看是否是这种情况。我可以忘记什么 randint也给。)
-
我相信
random.choice是一个更适合你使用的函数,那么你就不必处理索引了。
标签: python python-3.x