在Python中以不同方式相加连续整数

1 投票
4 回答
22171 浏览
提问于 2025-04-17 14:07

这是我最初的代码:

x = input("Please input an integer: ")
x = int(x)
i = 1
sum = 0
while x >= i:
    sum = sum + i
    i += 1
print(sum)

接下来是第二部分的内容:

b) 修改你的程序,把你的循环放在另一个循环里面,这样你就可以找到连续的和。例如,如果输入5,你需要找到5个连续数字的和,这样:

1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5 = 15

我在这个问题上卡了3天,实在搞不懂该怎么做。我试过这个方法,但没有成功。

while x >= i:
    sum_numbers = sum_numbers + i
    past_values = range(i)
    for ints in past_values:
        L = []
        L.append(ints)
        print(L, "+", i, "=", sum_numbers)
    i += 1

有没有人能帮我指点一下正确的方向?顺便说一下,我用的是Python 3.3。

4 个回答

0

你不一定要用while循环,两个for循环就能很好地解决问题,而且感觉更自然。

x = input("Please input an integer : ")
x = int(x)
item = range(1, x + 1)
for i in item:
    sum = 0
    for j in range(1, i + 1):
        sum = sum + j
    print(str(sum))
0
reduce(lambda x,y:x+y,range(x+1))

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

3

你可以通过一个循环来完成这个任务,使用 range 来定义你的数字,然后用 sum 来帮你遍历这些数字。

>>> x = input("Please input an integer: ")
Please input an integer: 5
>>> x = int(x)
>>>
>>> for i in range(1, x+1):
...     nums = range(1, i+1)
...     print(' + '.join(map(str, nums)), '=', sum(nums))
...
1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5 = 15

range(1, x+1) 会给我 [1, 2, 3, 4, 5],这个就像是一个控制器,告诉我们要打印多少次总和。所以,在你的例子中,这个循环会执行5次。

nums = range(1, i+1) 注意这里我们用的是 i,它是从上面的 range 中来的,我用它来定义我在这个序列中到了哪个数字。

' + '.join(map(str, nums)):

  • map(str, nums) 是用来把 nums 中的所有元素转换成字符串,因为 join 方法需要的是一个字符串的集合。
  • ' + '.join 是用来把元素用一个共同的字符串连接起来,在这个例子中就是 ' + '。如果只有一个元素,join 会直接返回那个元素。

sum(nums) 是计算 range(1, i+1) 中所有数字的总和:

  • 当 nums = range(1, 2) 时,sum(nums) = 1
  • 当 nums = range(1, 3) 时,sum(nums) = 3
  • 等等...

撰写回答