在Python中添加连续的整数,有一个扭曲

时间:2013-01-29 20:42:37

标签: python

这是我的原始代码:

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,您将找到五个连续数字的总和,以便:

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

任何人都可以帮助引导我朝着正确的方向前进吗? BTW。它是python 3.3

3 个答案:

答案 0 :(得分:2)

您可以在一个循环中执行此操作,方法是使用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],这可以作为我们想要打印总和的次数的控制器。因此,对于您的示例,此for循环将发生5次。

nums = range(1, i+1)注意我们在这里使用i,(取自上面的range),我用它来定义我在序列中最多的数字。

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

  • map(str, nums)用于将nums的所有元素转换为使用str的字符串,因为join方法需要填充字符串的迭代。
  • ' + '.join用于将元素与一个公共字符串“连接”在一起,在本例中为“+”。如果只有1个元素,join将只返回该元素。

sum(nums)为您提供range(1, i+1)中定义的所有数字的总和:

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

答案 1 :(得分:0)

reduce(lambda x,y:x+y,range(x+1))

答案 2 :(得分:0)

你不必使用while循环,2可以很好地完成这个技巧并且具有更自然的感觉。

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))