【问题标题】:List Index Out of Range when trying to return integer of list in nested for-loop尝试在嵌套的 for 循环中返回列表的整数时,列表索引超出范围
【发布时间】:2016-05-07 16:49:58
【问题描述】:

所以我有一个电子游戏锦标赛的玩家名单。

这些都包含在 player_usernames 中。

我已将排名归因于这些玩家,而这些玩家自己提供了一个 powerlevel、processed_ranks(如之前解析的)和 player_powerlevels。您可以使用

调用这些项目之一
i=0
print (player_usernames[i]+processed_ranks[i]+player_powerlevels[i])

同样,我有一个 rank_database,其中包含为每个等级提供和计算的功率等级。

目标,找到每个玩家的 true_power_level,以便类似地调用...

true_powerlevel[i]

这将是玩家力量等级的平均值和该玩家等级的计算力量等级。

目前的方法是定义两个指针...

player_identifier = 0 
database_identifier = 0

这在两个 for 循环中非常有用,用于将每个玩家的用户名/等级/功率等级与该等级的计算功率等级进行映射。但是,当尝试从 powerlevel 声明一个整数时,这将返回“List Index Out Of Range”。我无法解释这一点。

下面的示例代码演示了我的问题的性质(按回车键出错)...

####INPUT DATA#####
player_usernames = ["yardhin", "eclypse", "mma"]
processed_ranks = ["Rank 3", "Rank 1", "Rank 2"]
player_powerlevels = [10, 8, 9]
rank_database = ["Rank 1", "Rank 2", "Rank 3"]
powerlevel_database = [10, 9, 8]
###SET POINTERS###
player_identifier = 0
database_identifier = 0

for processed_rank in processed_ranks:
    print(player_identifier)
    print("This is player "+player_usernames[player_identifier])
    for rank in rank_database:
        database_identifier += 1
        if processed_rank == rank:
            print (processed_rank)
            print (rank)
            break
        else:
            print ("No Match")
    player_identifier += 1

input()

player_identifier = 0
database_identifier = 0
for processed_rank in processed_ranks:
    print(player_identifier)
    print("This is player "+player_usernames[player_identifier])
    for rank in rank_database:
        database_identifier += 1
        if processed_rank == rank:
            print(processed_rank)
            print(rank)
            input_powerlevel1 = int(player_powerlevels[player_identifier])
            input_powerlevel2 = int(powerlevel_database[database_identifier])
            true_powerlevel = (input_rank_powerlevel+true_rank_powerlevel/2)
            print (true_powerlevel)
            break
        else:
            print("No Match")
    player_identifier += 1

print ("Please help!")

堆栈跟踪

Traceback (most recent call last):
    true_rank_powerlevel = int(powerlevel_database[database_identifier])
IndexError: list index out of range

【问题讨论】:

  • 这是什么语言?没有标记
  • 这是 Python。堆栈跟踪现已发布@njzk2

标签: python list for-loop int enumerate


【解决方案1】:

列表是零索引的,所以你需要设置

database_identifier = -1

因为第一个 database_identifier += 1 会使其成为 0,然后是 1,然后是 2。

当它的值为 3 时,你会得到一个错误。

或者将database_identifier += 1移动到player_identifier += 1旁边

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 2013-11-25
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多