python判断是否一个序列是超增序列

python判断是否一个序列是超增序列

问题描述:

我想用python造一个函数判断是否一个序列是超增序列,即序列中的每个数必须大于其前面所有数的总和,如果是,返回True,否则返回False

以下是我的思路,然而如果传入super_increasing((0, 1, 2, 4))时候返回的是False,应该返回True才对,不知错误在哪,还望大家指教

img

1、for i in range(len(seq)-1) 起始是0,i=0时,if满足条件(此时seq[:0])=[];而sum([]) = 0),所以if条件为true,执行return,结束函数。
2、range(a,b) 取值为左闭右开,即[a,b)
3、range(b) 中省略a,默认值是0
综上,i应该从1开始,到len(seq)-1结束(用range表示为:range(1, len(seq)));
故for i in range(len(seq)-1)修改为for i in range(1,len(seq))


def ll(seq):
    for i in range(1,len(seq)):
        if  sum(seq[:i])>=seq[i]:
            return False
    return True
print(ll([0,1,2,4]))

有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

img

连续求和,效率太低。建议这样写:

>>> def super_increasing(seq):
    s = 0
    for i in range(len(seq)-1):
        s += seq[i]
        if seq[i+1] <= s:
            return False
    return True

>>> super_increasing([0,1,2,4])
True