我正在编写一个简单的基于回合的攻击RPG,这是LOTR主题。每个角色都有一个动作列表(攻防),每个动作都有自己的递归列表,其中包含动作名称、能力、花费多少魔法值以及后来我用来计算其成功率的一个数字。下面是一个小片段,说明如果玩家有足够的法力,我想向他展示他可以执行的动作(action2是列表中的第三个值)。每个回合,我只想让玩家看到他有足够的法力来执行的动作。当我在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)
发布于 2019-01-28 16:51:49
为了解决这个问题,您将得到一个索引错误,因为您的上一次迭代只有一个项目,您试图访问它的第三个项(正如Daniel所评论的)。
for action in action_list:
if action[0] == 'Pass':
print('Pass')
elif action[2] <= mana:
print(action)
发布于 2019-01-28 17:01:32
这是另一种方法。它使用列表理解并保留允许的操作列表。我还降低了法力来测试资源限制。
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")
输出:
Wrath of Mordor 20
Howl of the Ring Wraiths 25
https://stackoverflow.com/questions/54406634
复制相似问题