如何修改嵌套列表中的对应值?游戏随机选建筑后扣减库存遇阻碍
解决方案
你现有代码的核心问题有两个:
- 两次调用
random.choice()有可能抽到同一个建筑,不符合「选2个不同建筑」的需求 - 你只提取了建筑的名称字符串,没有和原列表中的库存条目做绑定,后续找不到对应条目修改数值
可以按下面的逻辑修改:
- 用
random.sample()直接从建筑列表中抽取2个不重复的完整条目,同时保留它们在原列表中的索引,方便后续修改库存 - 用户选定建筑后,直接通过索引修改对应位置的库存值即可
示例代码如下:
import random building_list = [['house', 8], ['hospital', 8], ['shopping-center', 8], ['airport', 8], ['park', 8]] # 随机抽取2个不重复的建筑,同时记录它们在原列表中的索引 selected = random.sample(list(enumerate(building_list)), 2) # 拿到两个选项的(索引,建筑信息) idx1, building1 = selected[0] idx2, building2 = selected[1] # 输出供用户选择的两个建筑名称 print("可选建筑:", building1[0], building2[0]) # 假设用户选了第一个建筑,对应索引是idx1 # 扣减库存 building_list[idx1][1] -= 1 # 验证修改结果 print(building_list)
如果你的业务场景要求建筑库存为0后从资源池中移除,扣减后加一层判断即可:
if building_list[idx1][1] == 0: del building_list[idx1]
内容的提问来源于stack exchange,提问作者user16472631
相关产品推荐
相关产品推荐

