【问题标题】:Finding all the multiples of 3 and 5 in the range of 100 using for loop使用 for 循环查找 100 范围内的所有 3 和 5 的倍数
【发布时间】:2021-11-24 11:51:28
【问题描述】:

我是编程的绝对初学者,我一直在做像这样的简单任务。 而且我真的看不出我如何在下面的这些代码中得到 2 个不同的结果。

total1 = 0
for element in range(1, 100):
    if element % 3 == 0:
        total1 = total1 + element
print(total1)
#1683

total2 = 0
for element in range(1, 100):
    if element % 5 == 0:
        total2 = total2 + element
print(total2)
#950

print(total1 + total2)
#2633

然后计算倍数的不同方法给了我不同的结果。

total = 0
for element in range(100):
    if element % 3 == 0 or element % 5 == 0:
        total += element
print(total)
#2318

从数学上讲,如果我没记错的话,100 范围内的数字 3 和 5 的倍数之和是 2633,但我无法弄清楚为什么其他解决方案给了我 2318。

提前感谢您的帮助!

【问题讨论】:

  • 因为你在数例如15 两次,这是不正确的。
  • 请编辑您的帖子并将代码放入代码区域。
  • 请注意,您的第一个代码可能更快更简洁:total1 = sum(range(0, 100, 3)total2 相同

标签: python for-loop multiple-select


【解决方案1】:

不同之处在于元素是一个可以被 3 和 5 整除的数字。在您的第一种方法中,该数字将被添加到总数中两次,而在第二种方法中,它只会被添加一次。

例如,您可以通过查看element = 15 时每种情况下发生的情况来检查它。在您的第一个代码中,total1total2 都将加 15,得到 total1 + total2 = 30 的总和。而在第二种方法中,您只需将 15 加到总数中一次,使总数仅为 15。

当一个数字被两者相除时,你需要弄清楚你想要发生哪种方法,应该加两次吗?还是只有一次?

【讨论】:

  • 非常感谢您的回答!老实说,这是我的第一个任务,我已经检查过了,但仍然得到了错误的答案,现在你已经说过了,我又检查了一遍,答案很好!我第一次尝试时错过了检查一个倍数... :) 祝你有美好的一天!
  • @Sw4y 很高兴能提供帮助。如果这回答了您的问题,如果您可以通过单击左侧的勾号来接受它会很好:)
猜你喜欢
  • 2018-06-06
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 2019-03-17
  • 1970-01-01
  • 2018-11-02
相关资源
最近更新 更多