【问题标题】:Need to add all the integers between 2 other integers需要将其他 2 个整数之间的所有整数相加
【发布时间】:2014-08-20 01:58:39
【问题描述】:

这是据我所知,不知道从这里往哪里走。

result = 0
x = int(input('First: '))
y = int(input('Last: '))
y = y+1
for i in range((print(x+1, y)):
print(result)

【问题讨论】:

  • 你到底想做什么?您的问题是指添加整数-您是否真的在尝试对整数求和?示例输入和输出可能会有所帮助。

标签: python-3.x integer


【解决方案1】:

这应该可行:

num1 = int(input("Enter first integer: "))
num2 = int(input("Enter second integer: "))

sumNum1Num2N = 0

print("Let's sum all the integers in this range [%d, %d]" %(num1, num2))

#This shows up the sum being done
for i in range(num1, num2 + 1):
        sumNum1Num2N = sumNum1Num2N + i
        print(sumNum1Num2N, " " , end="")

print()
print("The sum of the numbers between %d and %d is %d" %(num1, num2, sumNum1Num2N))

如果你想显示两个数字之间的整数。

for i in range(num1, num2 + 1):
        print(i)

但是,如果您想以最快的方式对 2 个数字求和,请使用内置函数 sumrange

m_sum = sum(range(num1, num2 + 1)) #[num1, num2]

从数学上讲,您还可以求出 A 和 B 之间数字的总和,其中 B > A:

B*(B + 1)/2 - (A - 1)*A/2

= (B^2 + B - A^2 + A) / 2

= ((B - A)*(B + A) + (B + A)) / 2

= (B + A) * (B - A + 1) / 2

但我认为这比其他两种方法更复杂,尽管数学过程很简单;)

【讨论】:

  • 不要使用 eval。 OP 对 int 的使用更安全。也不需要迭代来对整数范围求和。
  • 我这样做是因为 OP 希望看到总和完成!!!查看它对另一个答案的评论以确认我在说什么。
  • @PeterDeGlopper 好的,将 eval 更改为 int ;)
  • 我觉得还是用xrange比较好。
  • 如果不需要查看总和,则添加使用公式 (x + y)*(y - x +1)/2 来短路,我会投票 - 避免迭代因为基础数学似乎值得强调,至少在我看来。
【解决方案2】:

这能满足你的需要吗?

x = int(input('First: '))
y = int(input('Last: '))
for i in range(x,y+1):
    print(i)

【讨论】:

  • 它几乎做到了,我也想不通把所有的数字打印出来加起来然后给出答案,例如首先:1 最后:7 1 3 6 10 15 21 28
【解决方案3】:

试试:

>>> x = int(input('First: '))
First: 1
>>> y = int(input('Last: '))
Last: 10
>>> print(' + '.join(str(e) for e in range(x+1,y)),'=',sum(range(x+1,y)))
2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 44

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-17
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多