python为什么老是显示IndexError: list index out of range?求纠错
首先创建一个数字列表从2到n,第一个数字是从名单中剔除,并宣布为一个素数,这个数字的倍数为n从名单中剔除。这个过程一直持续到列表是空的的。defmain():n=inpu...
首先创建一个数字列表从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] 展开
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] 展开
展开全部
你 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之间的素数?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询