Project Euler#1 python代码不工作
对于Euler项目: 如果我们列出10以下的所有自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23 求1000以下所有3或5的倍数之和 我正在尝试使用Python,我有以下代码:Project Euler#1 python代码不工作,python,python-3.x,Python,Python 3.x,对于Euler项目: 如果我们列出10以下的所有自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23 求1000以下所有3或5的倍数之和 我正在尝试使用Python,我有以下代码: def findNums(): numsToAdd = [] num = 1 while num < 999: if 3 % num == 0 or 5 % num == 0: nu
def findNums():
numsToAdd = []
num = 1
while num < 999:
if 3 % num == 0 or 5 % num == 0:
numsToAdd.extend([num])
num +=1
#print(num) optional
for i in numsToAdd:
lastNum = 0
addition = numsToAdd[i] + lastNum
lastNum = numsToAdd[i]
print(lastNum)
findNums()
def findNums():
numsToAdd=[]
num=1
当num<999时:
如果3%num==0或5%num==0:
numsToAdd.extend([num])
num+=1
#打印(num)可选
我在努姆斯托阿德:
lastNum=0
加法=numsToAdd[i]+lastNum
lastNum=numsToAdd[i]
打印(lastNum)
findNums()
但是,当我尝试运行它时,会出现以下错误:
加法=numsToAdd[i]+lastNum
索引器:列表索引超出范围
有人能告诉我这是什么以及如何修复吗?您有几个问题:
if 3 % num == 0 or 5 % num == 0:
你的条件句是向后的。现在如何设置它,您要检查3或5是否可以被num
整除,而不是num
是否可以被3或5整除
for i in numsToAdd:
假设到达此点时,numsToAdd
具有以下值:[100500]
当你到达addition=numsToAdd[i]+lastNum
时,你说的是:
addition = numsToAdd[100] + lastNum
及
没有第100或500个元素。相反,您可以删除索引(以保留现有格式):
您还可以将列表中的所有值相加到一行:
sum(numsToAdd)
这可以替换整个for
循环
最后,您的第一个while
错误:
求1000以下所有3或5的倍数之和
您正在检查低于999的所有内容。更改循环时的:
while num < 1000:
当num<1000时:
您的代码的问题是您的列表numsToAdd
中只有465项。
与此相反:
numsToAdd[0]
numsToAdd[1]
numsToAdd[2]
.
.
numsToAdd[462]
numsToAdd[463]
numsToAdd[464]
您正在这样做:
numsToAdd[3]
numsToAdd[5]
numsToAdd[6]
.
.
numsToAdd[459]
numsToAdd[460]
numsToAdd[462]
发生此错误是因为列表索引超出范围!没有numsToAdd[465]
比如说numsToAdd
被定义为[8713455]
:那么你看到了吗对于numsToAdd:x=numsToAdd[i]
中的i是如何引起问题的吗?我投票将这个问题作为离题题来结束,因为欧拉项目特别要求人们不要在网上发布他们问题的答案。StackOverflow通过发布他们所有问题的答案来破坏他们的网站是一种糟糕的形式。首先,5%num==0
-这似乎正确吗?@theJollySin,这不是关闭此网站的有效理由。它的形式可能不好,但这是一个与编程相关的问题。因此,这里不是为了执行其他网站设置的TOS或君子协定up@theJollySin如果有人想找到project euler问题的解决方案,我相信不管怎样,他们都能找到。问题本身与编程有关,而不是解决项目euler问题。只需使用“i”而不是“numsToAdd[i]”!
numsToAdd[0]
numsToAdd[1]
numsToAdd[2]
.
.
numsToAdd[462]
numsToAdd[463]
numsToAdd[464]
numsToAdd[3]
numsToAdd[5]
numsToAdd[6]
.
.
numsToAdd[459]
numsToAdd[460]
numsToAdd[462]