【问题标题】:find sum of numbers in list which are squared查找列表中平方数的总和
【发布时间】:2021-12-02 09:51:40
【问题描述】:

我正在尝试从平方的列表中找到数字的总和。

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

这首先很简单,它可以正常工作并打印出正方形(1+2+3+4)的 30,但是如果我尝试仅从 for 循环中打印出最终数字,它会打印出 55 而不是 30 像这样:

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提示跳过它

【问题讨论】:

  • 由于第一个 code-sn-p 在循环内打印,你应该得到相当多的输出,只有你声称的单个 30

标签: python python-3.x list


【解决方案1】:

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

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

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

【讨论】:

  • 既然这是正确答案,我想在这里添加它的列表推导方法:sum([i * i for i in x_sequence if i % 5])
【解决方案2】:

在第一个代码 sn-p 中,您在循环内打印,但如果该值是 5 的倍数,您不会打印总数。相反,如果i 的值是5 的倍数,则继续循环。由于5 是列表中的最后一个元素,因此循环结束,您将不会打印任何内容。

在第二个代码中,您在循环完成后打印总结果。

不过,在这两种情况下,总数都将包括添加的25(来自5 * 5)。不同之处在于,在第一个代码中您不打印该值。

如果您不想将 5 的倍数包含在总数中,那么您需要在进行乘法运算并添加到 total 之前进行检查

if i % 5 == 0:
    continue
total = total + (i * i)

【讨论】:

    【解决方案3】:

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

    x_sequence = [1, 2, 3, 4, 5]
    total = 0
    for i in x_sequence:
        if i % 5 == 0:
            continue
        total += i * i
    print(total)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多