Python函数传参疑问:如何将输入值传递给summation函数?
解决函数参数传递的问题
嘿,刚学Python遇到参数传递问题太正常了,我来帮你理顺清楚~
首先看你当前代码的问题:你输入数字时只是把输入转成了整数,但没有把这些数值保存下来,所以调用summation()的时候根本没传任何参数,函数里的numbers是空元组,自然返回0啦。
解决步骤
你的summation函数用了*numbers这种可变位置参数,它可以接收多个单独的数值作为参数。我们只需要把输入的数字先存起来,再传递给函数就行:
- 先创建一个空列表,用来存储每一个输入的数字;
- 在输入循环里,把每次输入的整数添加到列表中;
- 调用函数时,用
*把列表里的元素“展开”成单个参数传递给函数。
修改后的完整代码
def summation(*numbers): add = 0 for y in numbers: add = add + y return add n = int(input("How many numbers you want to add: ")) # 创建空列表存储输入的数字 input_numbers = [] for x in range(1, n + 1): # 将输入的整数添加到列表中 num = int(input("Enter number: ")) input_numbers.append(num) # 用*展开列表,把每个元素作为单独参数传给summation print("Sum:", summation(*input_numbers))
关键知识点解释
- 函数定义里的
*numbers:会把传入的多个位置参数打包成一个元组,供函数内部遍历使用; - 调用时的
*input_numbers:会把列表(或元组)里的元素拆分成单个的位置参数,比如input_numbers是[5, 3, 7],summation(*input_numbers)就等价于summation(5, 3, 7),完美匹配函数的参数要求。
另外你原来代码里两次调用summation()是多余的,只需要调用一次就能得到正确的求和结果哦~
内容的提问来源于stack exchange,提问作者user13899130
相关产品推荐
相关产品推荐

