Python 为什么我收到索引器:列表索引超出范围第37行?
我写这段代码是为了得到名字、学生号和分数,然后找到最大值、报告和删除,但我有一个删除的问题,我无法消除它。当我运行时,我在第37行得到indexer:list索引超出范围,尽管我找不到问题所在Python 为什么我收到索引器:列表索引超出范围第37行?,python,Python,我写这段代码是为了得到名字、学生号和分数,然后找到最大值、报告和删除,但我有一个删除的问题,我无法消除它。当我运行时,我在第37行得到indexer:list索引超出范围,尽管我找不到问题所在 c=0 x=[] y=[] z=[] """o=int(input("enter menu:"))""" while True: print("o=1:::add ","o=2:::max ","o=3:::find ","o=4:::remove ","o=5:::report ","
c=0
x=[]
y=[]
z=[]
"""o=int(input("enter menu:"))"""
while True:
print("o=1:::add ","o=2:::max ","o=3:::find ","o=4:::remove ","o=5:::report ","o=6:::exit")
o=int(input("enter menu:"))
if o==1:
x.append(input("enter name:"))
z.append(int(input("enter #:")))
y.append(int(input("enter score:")))
c+=1
elif o==2:
i=1
for i in range(len(x)):
y[i]= y[i] if y[i]>y[i-1] else y[i-1]
"""i+=1"""
f=y[i-1]
print("max=",y[i-1])
elif o==3:
n=int(input("enter number:"))
for i in range(len(x)):
if n==z[i]:
print(x[i],y[i])
else:
print("not found")
elif o==4:
p=int(input("enter student number:"))
for i in range(len(x)):
if p==z[i]:
x.pop(i)
y.pop(i)
z.pop(i)
elif o==5:
for i in range(len(x)):
print("name:",x[i],"st number:",z[i],"score:",y[i])
elif o==6:
break
我认为这可能是因为当您删除项目时,您不会在项目被删除后中断。然后,当您到达使用N个元素的列表末尾时,只剩下N-1个元素 在以下内容之后添加中断:
for i in range(len(x)):
if p==z[i]:
x.pop(i)
y.pop(i)
z.pop(i)
break # here
或者改用查找
并重写为:
position = x.find(p)
if position != -1:
x.pop(position)
y.pop(position)
z.pop(position)
因为您试图访问一个不存在的列表项-索引大于列表中的项数。请记住,列表索引是基于零的。您是否尝试过使用
try/except
块调试它,并在except
套件中打印相关变量?现在可能是熟悉该模块的好时机。你能解释更多吗?为什么你说索引大于列表中的项目数?