You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发二十一点游戏出现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:54:07