我需要编写一个函数来计算所有数字n的总和.
Row 1: 1
Row 2: 2 3
Row 3: 4 5 6
Row 4: 7 8 9 10
Row 5: 11 12 13 14 15
Row 6: 16 17 18 19 20 21
Run Code Online (Sandbox Code Playgroud)
将上述行想象为"数字三角形"有助于此.该函数应采用数字n,表示要使用的数字和数量.第5行的总和是65.如何让我的函数对任何n值进行计算?
为清楚起见,这不是功课.这是在最近的一个中期,不用说,我很难过.
mgi*_*son 14
第5列中最左边的数字11 = (4+3+2+1)+1是sum(range(5))+1.这通常适用于任何人n.
所以:
def triangle_sum(n):
start = sum(range(n))+1
return sum(range(start,start+n))
Run Code Online (Sandbox Code Playgroud)
正如一群人所指出的那样,你可以通过sum(range(n))分析表达,n*(n-1)//2因为这可以通过以下方式更优雅地完成:
def triangle_sum(n):
start = n*(n-1)//2+1
return sum(range(start,start+n))
Run Code Online (Sandbox Code Playgroud)