Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Project Euler#1 python代码不工作_Python_Python 3.x - Fatal编程技术网

Project Euler#1 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

对于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:
                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]