如何在Python函数中对多个其他函数的返回值求和并打印到控制台
问题修复方案
核心问题梳理
- 命名冲突:自定义函数使用了
sum作为名称,覆盖了Python内置的sum()函数,导致原代码中调用内置求和的逻辑无法正常执行 - 内置函数调用错误:原注释中的
sum(sum1,sum2,sum3)写法不符合Python内置sum()的参数要求,内置sum()接收的第一个参数必须是列表、元组这类可迭代对象,不能传入多个独立的数值参数 - 重复调用:
main函数中先单独调用了3次得分采集函数,后续sum函数内又重复调用了3次,会出现要求用户重复输入6次得分的冗余逻辑 - 求和逻辑缺失:原
sum函数仅打印了第三个函数的返回值,没有实现三个返回值的累加逻辑
修复后代码
def function1(): # 询问用户作业得分,满分100 scoreEarned = int(input("Score earned? ")) return scoreEarned def function2(): # 询问用户作业得分,满分100 scoreEarned = int(input("Score earned? ")) return scoreEarned def function3(): # 询问用户作业得分,满分100 scoreEarned = int(input("Score earned? ")) return scoreEarned # 重命名函数,避免覆盖内置sum def calculate_total(): sum1 = function1() sum2 = function2() sum3 = function3() # 两种求和方式二选一即可 # 方式1:直接相加 final_sum = sum1 + sum2 + sum3 # 方式2:调用内置sum,需要传入可迭代对象(如列表) # final_sum = sum([sum1, sum2, sum3]) print("总得分:", final_sum) def main(): # 移除冗余的调用,仅执行求和函数即可 calculate_total() main()
优化扩展建议
三个得分采集函数逻辑完全一致,可以合并为一个通用函数,传入作业序号参数即可,减少冗余代码:
def get_score(work_num): scoreEarned = int(input(f"第{work_num}项作业得分? ")) return scoreEarned def calculate_total(): # 循环采集3次得分,代码更简洁 scores = [get_score(i+1) for i in range(3)] final_sum = sum(scores) print("总得分:", final_sum)
内容的提问来源于stack exchange,提问作者Michael Trujillo
相关产品推荐
相关产品推荐

