在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,你需要找到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 - 等等...