首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列表中找到被平方的数字之和

在列表中找到被平方的数字之和
EN

Stack Overflow用户
提问于 2021-12-02 09:51:40
回答 3查看 54关注 0票数 0

我正在试图从被平方的列表中找出数字之和。

代码语言:javascript
运行
复制
x_sequence = [1, 2, 3, 4, 5]
total = 0
for i in x_sequence:
    total = total + (i * i)
    if i % 5 == 0:
        continue
    print(total)

output: 30

这首先是简单的,它正确地工作,打印出30,也就是正方形(1+2+3+4),但是如果我试图只从for循环中打印出最后一个数字,它就会打印出55,而不是30,如下所示:

代码语言:javascript
运行
复制
x_sequence = [1, 2, 3, 4, 5]
total = 0
for i in x_sequence:
    total = total + (i * i)
    if i % 5 == 0:
        continue
print(total)


output: 55

我不知道它为什么会这样?我试着用我喜欢的方式替换i = i + (i * i),但是如果我从列表中删除3或4,它就给了我30,这是我不希望看到的。

我想要做到这一点:将列表中的所有数字平方,找出平方列表数的和,如果有一个平方数,在除以5后给出0提示,跳过它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-02 09:58:26

两个代码块结尾处的总价值为55。唯一的区别是,在最后一次迭代中,i%5等于0(继续),跳过了最后一个加法(25)的打印。

如果在达到5时不想将平方求和,那么在将其加到总变量之前,移动跳过条件:

代码语言:javascript
运行
复制
x_sequence = [1, 2, 3, 4, 5]
total = 0
for i in x_sequence:
    if i % 5 == 0:
        continue
    total = total + (i * i)
print(total)

> 30
票数 2
EN

Stack Overflow用户

发布于 2021-12-02 09:57:14

在第一个代码段中,您在循环中打印,但是如果值是5的倍数,则不会打印总计。相反,如果i的值是5的倍数,则继续循环。由于5是列表中的最后一个元素,所以循环结束,您将什么都不打印。

在第二段代码中,一旦循环完成,就会打印出总结果。

但是,在这两种情况下,总数都将包括添加的25 (来自5 * 5)。区别在于,在第一段代码中,您没有打印该值。

如果不希望将5的倍数包含在总数中,则需要在进行乘法和添加到total之前进行检查

代码语言:javascript
运行
复制
if i % 5 == 0:
    continue
total = total + (i * i)
票数 1
EN

Stack Overflow用户

发布于 2021-12-02 10:03:14

在if条件之前,您正在将平方值添加到总数中,因此所有的数字(包括5的平方)也将被添加到总数中。试试这个:

代码语言:javascript
运行
复制
x_sequence = [1, 2, 3, 4, 5]
total = 0
for i in x_sequence:
    if i % 5 == 0:
        continue
    total += i * i
print(total)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70197270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档