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
相关产品推荐
相关产品推荐

