繁体   English   中英

python 程序打印范围内连续数字的总和

[英]python program to print sum of consecutive numbers in a range

编写一个 python 程序来打印列表中某个范围内的 3 个连续数字的总和。 例如我们输入 n = 8 所以程序将打印 [1+2+3,2+3+4,3+4+5,4+5+6+,5+6+7,6+7+8 ]表示 output 应该是 =[6,9,12,15,18,21] 我是编程新手,我的代码是:-

arr=[]
N=int(input("enter the value of N"))
def lst(arr):
    for i in range(N):
        x=[i]+[i+1]+[i+2]
        arr.append(x)
lst(arr)
print(arr)

这将为您提供您正在寻找的 output。 它从 1 而不是 0 开始索引,并在每次迭代中创建的列表上调用sum

编辑:正如评论中所指出的,创建这些列表是不必要的,你可以做一个总和。

arr=[] 
N=int(input("enter the value of N")) 
def lst(arr): 
    for i in range(1, N - 1): 
        x = (i) + (i + 1) + (i + 2) # for ease of reading 
        arr.append(x) 
        

lst(arr) 
print(arr)

使用列表理解 - 给定一个列表和感兴趣的长度lgt

l = list(range(1, 9))
lgt = 3

print([sum(l[i-lgt:i]) for i in range(lgt, len(l) + 1)])

OUTPUT

[6, 9, 12, 15, 18, 21]

为什么你不能使用列表理解,

In [1]: [(i+1) + (i+2) + (i+3) for i in range(7)]
Out[1]: [6, 9, 12, 15, 18, 21, 24]

您也可以使用数学洞察力尝试这个改进的版本:

arr=[] 
N = int(input("enter the value of N")) 
def lst(arr): 
    for i in range(1, N - 1): 
        tot = (i + 1) * 3     # for ease of readings 
        arr.append(tot) 
        

lst(arr) 
print(arr) 

# List Comp:
def lst_sum(N):
    return [(i + 1) *3 for i in range(1, N-1)]
    
print(lst_sum(8))

Output:

[6, 9, 12, 15, 18, 21]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM