¿Índice de lista fuera de rango?

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  ') if userinput == "1": main() else: main() 

índice de lista de rastreo fuera de rango en la impresión (list_title) [k],)

Ok actualizado para que pueda ver toda la función.

k < 5 seguirá siendo cierto hasta que k scope 5 , lo que significa que el número máximo de k es 4 . Recuerde, los índices de la lista comienzan a contar desde 0 , por lo que el índice más alto para k es 3 .

Entonces, cuando intentas obtener list_title[4] , obtendrás un IndexError .

Tendrás que cambiar k < 5 a k < 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 

De esta manera, cuando el valor de k es 4 , k se restablecerá a 0 , y el error nunca ocurrirá.

¡Espero que esto ayude!

En lugar de incrementar manualmente un índice, use enumerate ()

 for k, j in enumerate(i): print (list_title[k],) print (j) 

o mejor, usa zip ()

 for k, j in zip(list_title, i): print (k, j) 

Aquí hay una gran presentación sobre bucles en Python: http://nedbatchelder.com/text/iter.html