如何不使用导入函数提取嵌套字典对应投掷值并求和?
计算玩家对应掷骰子尝试的和(无导入函数实现)
嘿,咱们来搞定这个问题!这里有个记录游戏玩家掷骰子数据的嵌套字典,需要把每个玩家两次掷骰子的对应尝试数值相加,而且全程不能用任何导入函数。先看看原始数据:
game_data = { 'A': {'score': 0, 'throw1': [3, 2, 5, 6], 'throw2': [1, 5, 5, 1]}, 'B': {'score': 0, 'throw1': [2, 2, 3, 6], 'throw2': [6, 4, 2, 2]} }
解决方案思路
核心就是遍历每个玩家,然后把他们的throw1和throw2列表中相同位置的元素一一相加。因为每个玩家都是4次尝试,所以可以通过索引循环来配对元素,或者用更简洁的列表推导式。
方法1:基础循环实现
这种方式更直观,适合新手理解:
# 遍历字典里的每个玩家及其数据 for player, stats in game_data.items(): # 取出两次掷骰子的结果列表 first_throws = stats['throw1'] second_throws = stats['throw2'] # 存储对应尝试的和 combined_results = [] # 循环每个尝试的索引,相加对应位置的数值 for i in range(len(first_throws)): combined_results.append(first_throws[i] + second_throws[i]) # 输出结果,也可以把结果存回玩家的字典中 print(f"玩家{player}的对应尝试和:{combined_results}") # 如果需要更新score为总和的话,取消下面注释 # stats['score'] = sum(combined_results)
运行这段代码后,你会得到:
玩家A的对应尝试和:[4, 7, 10, 7] 玩家B的对应尝试和:[8, 6, 5, 8]
方法2:列表推导式简化
如果想让代码更简洁,用列表推导式一步搞定,同样不需要任何导入:
for player, stats in game_data.items(): combined_results = [stats['throw1'][i] + stats['throw2'][i] for i in range(len(stats['throw1']))] print(f"玩家{player}的对应尝试和:{combined_results}")
两种方法都能完美实现需求,完全基于Python基础语法,没有用到任何外部导入函数。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

