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()
回溯列表索引超出print(list_title)[k],)
的范围
好了,所以你可以看到整个功能。
答案 0 :(得分:3)
k < 5
之前, 5
仍然有效,这意味着k
的最大数量为4
。请记住,列表索引从0
开始计算,因此k
的最高索引为3
。
因此,当您尝试获取list_title[4]
时,您将获得IndexError
。
您必须将k < 5
更改为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
这样,当k
的值为4
时,k
将重置为0
,错误将永远不会发生。
希望这有帮助!
答案 1 :(得分:1)
for k, j in enumerate(i):
print (list_title[k],)
print (j)
或更好,请使用zip()
for k, j in zip(list_title, i):
print (k, j)
以下是关于Python循环的精彩演示:http://nedbatchelder.com/text/iter.html