sum_of_n采用整数n并返回长度为abs(n)+ 1的List。 List / Array包含通过取0到n之间的连续整数之和产生的算术系列中的数字。
示例
5 - > [0,1,3,6,10,15]
-5 - > [0,-1,-3,-6,-10,-15]
7 - > [0,1,3,6,10,15,21,28]
def sum_n(n):
a=n+1
x=0
b=0
list1=[]
for x in range(0,a):
b=(x*(x+1)*0.5)
list1.append(int(b))
return list1
print sum_n(5)
print sum_n(-5)
----输出------
[0,1,3,6,10,15]
[]
请解释我如何以否定整数返回列表?
答案 0 :(得分:1)
对于负整数,您需要在range()
中使用否定步骤。所以:
if a < 0:
step = -1
else:
step = 1
for x in range(0, a, step):
现在,在计算b
时,您需要将1
添加到x
。在做负数时,还需要将其更改为-1
。因此,您可以将step
放在1
所在的位置。
此外,在处理负数时,乘以0.5并除以2之间的差异,并且为了获得结果,您需要后者。因此,您对b
的计算现在应为:
b = x * (x + step) // 2
作为奖励,这将永远是一个整数,所以你以后不需要int(b)
(尽管它不会受到伤害)。
答案 1 :(得分:1)
我认为返回不是问题,但是你的列表实际上是空的。您是指在将其分配给?
之前取n的绝对值您可以在循环中添加一个print语句,以查看它正在做什么。
答案 2 :(得分:0)
#if a < 0:
a = -5 #just defined the variable for easy explanation
y = 0
list1 = [0]
for x in range (1,abs(a)+1):
for h in range(x+1):
y -= h #<---- here
list1.append(y)
y = 0
print (list1)
输出
>>>
[0, -1, -3, -6, -10, -15]
>>>
只是开采而不是总和。