You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:27:04