Python 允许包含两个或三个数字的列表的函数

Python 允许包含两个或三个数字的列表的函数,python,python-3.x,Python,Python 3.x,函数被定义为使用一个列表的三个数字,然后当我使用n2列表时,它工作得非常好。但它不使用n1,因为它只有2个参数,当它试图找到n1时[2]会给出一个错误 如何生成允许不同长度列表的函数?? 只有那两个或三个,我不需要更多 谢谢各位: def sum (n): return n[0] + n[1] + n[2] n1 = [1, 2] n2 = [1, 2 ,3] print( sum(n2)) 显然,这只是整个程序的一个缩减。但它很有说明性让它摄取args和sum def sum1

函数被定义为使用一个列表的三个数字,然后当我使用n2列表时,它工作得非常好。但它不使用n1,因为它只有2个参数,当它试图找到n1时[2]会给出一个错误

如何生成允许不同长度列表的函数?? 只有那两个或三个,我不需要更多

谢谢各位:

def sum (n):

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

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

print( sum(n2))

显然,这只是整个程序的一个缩减。但它很有说明性

让它摄取args和sum

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)

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

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是一个python函数名,并且通常使用与这些函数相同的名称声明函数不是一个好主意。

顺便说一句,有一个内置的sum函数可以对任意长度的列表求和。但我想这是一个练习,你应该编写你自己的版本。@Jean-Françoisfare这不是一个很好的重复目标,因为OP需要一个函数,它只接受一个列表参数,而不是多个数字参数。同意。我不会重新打开,因为它是重复的。改变了目标。如果你找到一个更好的,请随意编辑/添加它,也可能是无限递归:啊。哈哈,我困了。谢谢你接电话。现在fixed@PM2Ring谢谢我在手机上做这件事,但没有捕捉到列表输入。解决了这个问题