作业帮 > 英语 > 作业

python为什么老是显示IndexError: list index out of range?求纠错

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:英语作业 时间:2024/08/19 13:06:29
python为什么老是显示IndexError: list index out of range?求纠错
首先创建一个数字列表从2到n,第一个数字是从名单中剔除,并宣布为一个素数,这个数字的倍数为n从名单中剔除.这个过程一直持续到列表是空的的.
def main():
n=input("what's the limit n?")
mylist=range(2,n+1)
primes=[]
while mylist!=[]:
a=mylist.pop(0)
primes.append(a)
for i in range(0,len(mylist)):
if mylist[i]/a*a==mylist[i]:
del mylist[i]
print primes
main()
求纠错,好像是这个地方不对mylist[i]/a*a==mylist[i]
python为什么老是显示IndexError: list index out of range?求纠错
你 del了列表元素,列表项目就减少了,比如一开始mylist是10个数字,则range循环10次,从0到9,而在下面的if语句中,你删除了mylist中的一个元素,这时候mylist长度变成了9,你再访问mylist[9]就越界了,所以会报IndexError:list index out of range错误
再问: def main(): n=input("what's the limit n?") mylist=range(2,n+1) primes=[] p=[] while mylist!=[]: a=mylist.pop(0) primes.append(a) for i in range(0,len(mylist)): if mylist[i]/a*a==mylist[i]: p.append(i) del mylist[?] print primes main() 我想这样写,可是不知道问号那个地方应该怎样弄?菜鸟求指教
再答: 你这个题目我看不懂,算2-n之间的素数?
再问: 对啊,我现在的想法是如果i满足mylist[i]/a*a==mylist[i],就把i加到p这个list当中,在if结束之后del mylist[i]。。。不知怎样写?
再答: mylist[i]/a*a==mylist[i] 这个式子除了类型可能不同外,是恒等的,一个数字除a再乘a,不还等于这个数嘛