如何在程序中返回带有负整数的列表?

时间:2016-05-04 20:04:28

标签: python

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]

[]

请解释我如何以否定整数返回列表?

3 个答案:

答案 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]
>>> 

只是开采而不是总和。