列表索引超出范围?

Ski*_*ilo 1 python sqlite python-3.x

def print_db():
    con = lite.connect('master.db')
    print ('Enter a first name:')
    firstname = input('> ')
    with con:
        cur = con.cursor()
        data = cur.fetchone()
        cur.execute("SELECT * FROM Contacts WHERE First = (?);", (firstname,))
        list_title = ['First Name', 'Last Name', 'Phone', 'Email']
        k = 0
        for i in cur:
            print ("\n")
            for j in i:
                print (list_title[k],)
                print (j)
                if k < 5: k+=1
                else:
                    k = 0

    print (data)
    print ('Enter 1 to return to main menu')
    userinput = input('> ')
    if userinput == "1":
        main()
    else:
        main()
Run Code Online (Sandbox Code Playgroud)

打印时回溯列表索引超出范围 (list_title)[k],)

好的更新,所以你可以看到整个功能。

aIK*_*Kid 5

k < 5在 k 达到 之前仍然为真5,这意味着最大数量k4。请记住,列表索引从 开始计数0,因此最高索引k3

因此,当您尝试 get 时list_title[4],您会得到一个IndexError.

您必须更改k < 5k < 4.

for j in i:
            print (j)
            if k < 4: 
                print (list_title[k],) #Move it to the condition here
                k+=1
            else:
                k = 0
Run Code Online (Sandbox Code Playgroud)

这样,当的值k4k将重置0,并不会发生错误。

希望这可以帮助!