首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要在列表中索引一个值- IndexError:超出范围的列表索引

我需要在列表中索引一个值- IndexError:超出范围的列表索引
EN

Stack Overflow用户
提问于 2019-01-28 16:46:24
回答 2查看 48关注 0票数 0

我正在编写一个简单的基于回合的攻击RPG,这是LOTR主题。每个角色都有一个动作列表(攻防),每个动作都有自己的递归列表,其中包含动作名称、能力、花费多少魔法值以及后来我用来计算其成功率的一个数字。下面是一个小片段,说明如果玩家有足够的法力,我想向他展示他可以执行的动作(action2是列表中的第三个值)。每个回合,我只想让玩家看到他有足够的法力来执行的动作。当我在Pycharm中运行代码时,它实际上打印了我需要的值,但是它仍然用索引错误关闭代码。如何在不更改列表布局的情况下修复此问题?谢谢!

代码语言:javascript
运行
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-28 16:51:49

为了解决这个问题,您将得到一个索引错误,因为您的上一次迭代只有一个项目,您试图访问它的第三个项(正如Daniel所评论的)。

代码语言:javascript
运行
复制
for action in action_list:
    if action[0] == 'Pass':
        print('Pass') 
    elif action[2] <= mana:
        print(action)
票数 0
EN

Stack Overflow用户

发布于 2019-01-28 17:01:32

这是另一种方法。它使用列表理解并保留允许的操作列表。我还降低了法力来测试资源限制。

代码语言:javascript
运行
复制
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")

输出:

代码语言:javascript
运行
复制
Wrath of Mordor 20
Howl of the Ring Wraiths 25
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54406634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档