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

Python中如何为列表内的字符串元素绑定对应数值?(二十一点游戏场景)

解决方案

方法1:使用字典建立卡牌-数值映射(最推荐)

用字典的键值对直接绑定卡牌名称和对应点数,是解决这类映射需求最直观的写法:

import random

# 定义卡牌到点数的映射关系
card_value_map = {
    "Ace": 1,
    "2": 2,
    "3": 3,
    "4": 4,
    "5": 5,
    "6": 6,
    "7": 7,
    "8": 8,
    "9": 9,
    "10": 10,
    "Jack": 10,
    "Queen": 10,
    "King": 10
}
# 生成卡牌名称列表用于随机抽卡
card_list = list(card_value_map.keys())

# 抽卡逻辑
card1_name = random.choice(card_list)
card1_value = card_value_map[card1_name]
card2_name = random.choice(card_list)
card2_value = card_value_map[card2_name]

# 直接加数值得到总点数
card_total = card1_value + card2_value

方法2:保留原有双列表写法的修正方案

如果你不想改原来的两个列表存储的结构,只需要补全数值列表的长度,保证和卡牌列表的索引一一对应,抽卡时先取索引再分别拿卡牌名和数值即可:

import random

card = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]
# 补全数值列表,和上方卡牌列表同索引对应
value = [1,2,3,4,5,6,7,8,9,10,10,10,10]

# 先随机生成索引
index1 = random.randint(0, 12)
card1_name = card[index1]
card1_value = value[index1]
index2 = random.randint(0, 12)
card2_name = card[index2]
card2_value = value[index2]

card_total = card1_value + card2_value

额外提示:二十一点规则中Ace可以根据总点数灵活选择按1或者11计算,后续完善规则时可以单独判断手牌中的Ace数量,调整总点数避免爆牌即可。

内容的提问来源于stack exchange,提问作者bro pls help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:36:02