这是我的原始代码:
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
答案 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)
中定义的所有数字的总和:
range(1, 2)
时,sum(nums)
= 1 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))