【问题标题】:Don't understand why am getting a "Tuple index out of range" error不明白为什么会出现“元组索引超出范围”错误
【发布时间】:2017-08-14 23:36:31
【问题描述】:

我对 python 还很陌生,遇到了许多人以前遇到的错误,但我无法修复以下根据客户购买历史类型推荐游戏的代码。

game_name = ["COD1", "COD2", "COD3", "SKYRIM", "H1Z1", "CSGO", "BF1", "BF3", "BF4", "GTAV", "GTAIV", "FIFA17", "NBA2K17", "MADDEN17", "PES2017", "NHL17", "MLB17", "PGA17", "F12017", "NBA2017"]
history = [["COD1", "COD2", "SKYRIM", "H1Z1", "NHL17", "MLB17", "CSGO", "BF1", "BF3", "F12017"], ["FIFA17", "NBA2K17", "MADDEN17", "PES2017", "COD3", "SKYRIM", "MLB17", "PGA17", "NBA2017", "GTAIV"], ["COD2", "COD3", "PES2017", "NHL17", "BF4", "GTAV", "GTAIV", "MLB17", "PGA17", "F12017"]]
forename = ["Joe", "George", "Oliver"]
HistoryGenre=[["Action", "Action", "Action", "Action", "Sport", "Sport", "Action", "Action", "Action", "Sport"], ["Sport", "Sport", "Sport", "Sport", "Action", "Action", "Sport", "Sport", "Sport", "Action"], ["Action", "Action", "Sport", "Sport", "Action", "Action", "Action", "Sport", "Sport", "Sport"]]
rr=1
ActionCounter=0
SportCounter=0
while rr==1:
    rec=input("Who would you like to recommend games for?")
    if rec in forename:
        rr+=1
        r=forename.index(rec)
        ActionCounter = HistoryGenre[r][:10].count("Action")
        SportCounter = HistoryGenre[r][:10].count("Sport")
        if SportCounter==ActionCounter:
            both_list=game_name
            both_remover=0
            for i in both_list:
                if both_list[both_remover] in history[r]:
                    both_list.remove(both_list[both_remover])
                else:
                    both_remover+=1
                    loops=1
            for x in range(1):
                rec1=random.randint(0,len(both_list)-1)
                while loops==1:
                    for x in range(1):
                        rec2=random.randint(0,len(both_list)-1)
                        if rec2!=rec1:
                            loops+=1
                        else:
                            loops=1
                    loops1=1
                    while loops1==1:
                        for x in range(1):
                            rec3=random.randint(0,len(both_list)-1)
                            if rec3!=rec2 and rec3!=rec1:
                                loops1+=1
                            else:
                                loops1=1

                     print("\n")
                     print("{} likes both genres! I recommend {} and {} and {} and {}".format(rec, both_list[rec1], both_list[rec2], both_list[rec3]))

错误消息出现在代码的最后一行并显示为Tuple index out of range,即使both_list 不是tuple?其他人似乎遇到了问题,因为我正在格式化该数组中的索引,但我尝试过的任何方法似乎都不起作用,并且出现了相同的错误消息,我不知道究竟是哪个错误的根源。

【问题讨论】:

  • 请注意,您的字符串末尾有 5 个{}s,但只有四个输入项
  • 我很愚蠢。复制粘贴错误。

标签: python arrays indexing tuples


【解决方案1】:

看起来您在 format() 调用中的参数少于 {} 的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2017-12-02
    • 2018-06-24
    • 2017-11-11
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多