允许带有两个或三个数字的列表

时间:2018-05-22 15:08:03

标签: python python-3.x

该函数被定义为使用三个数字的列表,然后当我使用n2列表时,它完美地工作。但是它没有使用n1,因为它只有2个参数,当它试图找到n1 [2]时会出错。

我如何制作一个承认不同长度列表的功能? (只有那些2或3,我不需要更多

谢谢:)

def sum (n):

    return n[0] + n[1] + n[2]

n1 = [1, 2]
n2 = [1, 2 ,3]

print( sum(n2))

显然,这只是整个计划的缩减。但这是一种愚蠢的行为

2 个答案:

答案 0 :(得分:0)

您可以真正明确允许的输入范围:

def my_sum(n):
    if len(n) == 2:
        return n[0] + n[1]
    elif len(n) == 3:
        return n[0] + n[1] + n[2]
    else:
        raise ValueError("The list must be exactly 2 or 3 elements long.")

我将你的函数重命名为my_sum,因为sum是一个built-in python函数名,并且声明与这些函数同名的函数通常不是一个好主意。

答案 1 :(得分:-1)

让它摄取args并求和。

def sum1(val_list):

    total = 0
    for x in val_list:
        total += x

    return total

或简单

def sum1(val_list):

    return sum(val_list)

如果你愿意,如果它超过3,你总是可以提出错误。

def sum1(val_list):

    if len(val_list) > 3:
        raise ValueError()

    return sum(val_list)