【问题标题】:How to get the sum of all integers between m and n in a loop?如何在循环中获得m和n之间所有整数的总和?
【发布时间】:2015-11-09 06:51:44
【问题描述】:

我在获取mn 之间的所有整数之和时遇到问题。在代码中,我必须输入两个整数mn,并计算并显示从mn所有整数的和。

应该使用循环重复将数字添加到总数中来计算总和,我不能使用公式来计算结果。我目前生成的代码如下所示:

m = int(input("Enter a number: "))
n = int(input("Enter a second number: "))
sum = 0

for i in range (m,n):
    m+n
    sum += i
    print(i)

【问题讨论】:

  • 那么上面的代码有什么问题?
  • 当我输入数字 4 和 5 时,结果只有 4,这是不正确的
  • @rico99 检查我的答案
  • range(n, m)m 独有的,这意味着循环转到 m-1(包括在内)。你可以在the docs
  • 我已回滚您的最新编辑。您不应该编辑问题中的代码,使其与解决方案相匹配。如果您找到了一个好的答案,请在正确答案旁边的标记处接受它,不要编辑您的问题。

标签: python python-3.x for-loop


【解决方案1】:

您应该使用range(m, n+1) 以将n 包含在范围内。

for i in range (m,n+1):
    s += i
    print(i)

print(s)

例如,range(4,6) 会给你[4,5],但range(4,5) 只会给你[4]

【讨论】:

  • 输入前两个整数后没有任何反应
  • @rico99 你输入了什么?
  • 好的,谢谢,它现在返回 m 和 n 之间的数字,但我想将 m 和 n 之间的所有数字(包括 m 和 n)加在一起?
  • 是的,它包括mn这样,你试过吗?在循环之后打印sum
【解决方案2】:

我在上面的代码中看到的一些问题是 -

  1. 您正在打印i 的值,它们是从mn 的整数(不包括n),并且您没有打印sum

  2. 您正在执行 m+n 并且只是在循环内丢弃结果,该行在循环中没有任何作用,您不需要它。

  3. Main - 你会到 n-1 ,不包括 n 因为 range(start, stop) 只到 stop - 1 ,它不包括 stop 。你需要做range(m,n+1)

  4. 您不应使用 sum 作为变量名,因为它会影响内置函数 - sum()

【讨论】:

  • #4 很重要,我遇到的所有书籍和教程都完全忽略了这一点。顺便提一下,这是一个比公认的更好的答案。
【解决方案3】:

range(m,n)m 迭代到n-1。如果你想要从 m 到 n 的数字总和(包括 m 和 n)

for i in range(m, n+1):
    sum+=i

【讨论】:

  • 不要使用sum作为变量名,因为它会影响built-in sum()函数。
【解决方案4】:

只需在范围上调用sum 函数,将1 添加到n 以将n 包含在总和中,因为范围半开因此上限不包括在内:

m = int(input("Enter a number: "))
n = int(input("Enter a second number: "))


print(sum(range(m, n+1)))

不要使用 sum 作为变量名,因为它会影响内置函数 sum,如果您在代码中定义 sum,原因会很明显

【讨论】:

  • OP 限制使用 for 循环进行求和,尽管这是赢得范围的好方法。
  • @holroy,OP不能使用公式,使用sum没有限制,它是一个循环。
  • 看他的第二段,我读到因为OP需要自己编写循环,而不是sum定义中的隐藏循环
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-25
  • 2022-12-02
  • 2016-04-25
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多