我正在为LOTR主题编写一个简单的基于回合的攻击RPG。每个角色都有一个动作列表(进攻/防御),每个动作都有自己的递归列表,其中包含动作名称,力量,花费的法力值以及我以后用来计算成功率的数字。下面是一小段我想如何根据玩家的法术力向他展示他可以执行的动作的小片段(列表中第三个值的动作[2]。每回合我只希望玩家看到动作他有足够的魔法来执行。当我在Pycharm中运行代码时,它实际上最终会打印出我需要的值,但仍然会因索引错误而关闭代码。如何在不更改列表布局的情况下解决此问题?你!
action_list = [['Wrath of Mordor', 25, 20, 70],
['Howl of the Ring Wraiths', 35, 25, 60],
['Might of Morgoth', 40, 35, 45],
['Pass']]
mana = 100
for action in action_list:
if action[2] <= mana:
print(action)
答案 0 :(得分:0)
快速解决您的问题,因为上一次迭代只有一个项目要尝试访问它的第三项(如Daniel所评论),因此您遇到了索引错误。
for action in action_list:
if action[0] == 'Pass':
print('Pass')
elif action[2] <= mana:
print(action)
答案 1 :(得分:0)
这是另一种方法。它使用列表推导并保留允许动作的列表。我还减少了测试资源限制的魔法。
thresh=4
输出:
action_list = [['Wrath of Mordor', 25, 20, 70],
['Howl of the Ring Wraiths', 35, 25, 60],
['Might of Morgoth', 40, 35, 45],
['Pass']]
mana = 30
act_choice = [action for action in action_list
if len(action) >= 2 and action[2] <= mana]
if act_choice:
for action in act_choice:
print(action[0], action[2])
else:
print("Pass")