开发二十一点游戏出现List index is out of range报错如何解决
报错原因排查
random.randint(a, b)的作用是生成介于参数a、b之间的整数,你当前代码将cards列表的元素值作为randint的入参,得到的playercard1是牌面数值,而非列表的合法下标。- 后续逻辑直接将牌面数值作为下标访问
cards[playercard1],如果数值大于等于cards列表的长度,就会触发索引越界错误。比如你的cards列表长度为13,合法下标范围是0~12,若生成的playercard1数值为13,访问cards[13]就会超出列表范围。
修复方案
你的需求是从cards列表中随机取一张牌,应该先随机生成合法的列表下标,再通过下标获取对应的牌面值,修正后代码如下:
from random import randint # 假设你预先定义的cards列表类似:cards = [2,3,4,5,6,7,8,9,10,10,10,10,11] # 随机生成合法下标,用len(cards)-1做上限可以适配列表长度后续变更的场景 playercard1_idx = randint(0, len(cards)-1) # 取出对应的牌面值 playercard1_val = cards[playercard1_idx] if playercard1_val == 10 or playercard1_val == 11 or playercard1_val == 12: print("Your card has a point value of ten.") playerpoints = playerpoints + 10
内容的提问来源于stack exchange,提问作者Lauren Galvan
相关产品推荐
相关产品推荐

