【问题标题】:Parallel Lists with IndexError message带有 IndexError 消息的并行列表
【发布时间】:2021-10-10 19:29:03
【问题描述】:

我几乎完成了一个项目,如果没有“max = ring[0]”行的 IndexError,我似乎无法通过本节。如果有帮助,变量 ring 和 player 是常量变量,标记为 player = [] 和 ring = []。这是最新的 Python 3 版本。谢谢!

def main():
    player = []
    ring = []
    menu()
    addNBA(player, ring)
    rankNBA(player, ring)

# yes or no input request to continue updating ranking
def addNBA(player, ring):
    choice = "y"
    while choice.lower() != 'y' and choice.lower() != "n":
        print("Invalid. Enter 'y' or 'n'.")
        playerName = playerEntry()
        player.append(playerName)
        nbaRing = ringEntry()
        ring.append(nbaRing)
        choice = input("Do you want to continue updating the ranking? Enter 'y' or 'n'. ")

# sorts list of players and rings from lowest to highest amount of rings
def rankNBA(player, ring):
    max = ring[0]
    bestPlayer = player[0]
    min = ring[0]
    worsePlayer = player[0]
    print(player)
    for i in range(len(ring)):
        print(ring[i])
        if max < ring[i]:
            max = ring[i]
            bestPlayer = player[i]
        if min > ring[i]:
            min = ring[i]
            worsePlayer = player[i]

【问题讨论】:

  • 你传递给这个方法的数据是什么?如果您在 ring[0] 上收到 IndexError,则这意味着您的环数据是一个空列表。
  • 我是一名新的 CS 学生,如果我没有正确回答这个问题,请原谅我。环作为整数传递,玩家作为字符串传递。
  • 玩家和戒指都必须是列表,如果您希望通过索引访问它们。如果你这样做,它似乎对我有用。 RankNBA(['a', 'b', 'c'], [0, 1, 2])
  • 不要将代码放入 cmets - 编辑您的问题并将其粘贴到那里。还要给出您输入的确切数据,以及您看到的堆栈跟踪的确切错误。您粘贴的代码在正确的输入下工作正常 - 所以它一定是错误的输入。
  • 你的 while 循环永远不会是 true 所以 addNBA 运行并返回而不做任何事情,然后 rankNBA 用空列表调用。

标签: python python-3.x index-error


【解决方案1】:

我认为您想要的是忽略错误并运行代码。 所以你应该使用 try except 语句: 根据您的代码尝试出现错误的地方:

def rankNBA(player, ring):
    try:
        max = ring[0]
    except IndexError:
        pass
    bestPlayer = player[0]
    min = ring[0]
    worsePlayer = player[0]
    print(player)
    for i in range(len(ring)):
        print(ring[i])
        if max < ring[i]:
            max = ring[i]
            bestPlayer = player[i]
        if min > ring[i]:
            min = ring[i]
            worsePlayer = player[i]

如果同样的错误再次出现在 min = ring[0] 或其他任何地方,请使用 try except。 结论

我们使用 try except 语句只是为了告诉程序它应该忽略错误并继续前进。

我希望这能回答你的问题。

【讨论】:

  • 谢谢!现在我收到了 bestPlayer = player(0) 的相同错误。我是将该行移到 max = ring(0) 下还是添加除 IndexError pass 之外的另一行?
  • 两者都会做同样的事情,但尽量保持一切清洁,以免将来给您带来麻烦。
  • 支持并将问题标记为答案,以便其他人可以看到它正在工作,快乐编码
猜你喜欢
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多