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

禁用sum函数且仅用单循环实现列表中心平均值的问题

实现符合要求的中心平均值函数

需求回顾

计算列表的中心平均值:移除列表中的一个最大值和一个最小值后,剩余元素的平均值。要求:

  • 不能使用内置的sum()函数
  • 仅允许使用一个循环

修正后的完整代码

def centered_average(lst: list) -> float:
    """
    Precondition: len(lst) >= 3

    >>> centered_average([1, 1, 5, 5, 10, 8, 7])
    5.2
    >>> centered_average([1, 2, 3, 4, 100])
    3.0
    >>> centered_average([-10, -4, -2, -4, -2, 0])
    -3.0
    """
    total = 0
    high = lst[0]
    low = lst[0]
    
    for num in lst:
        # 手动累加总和替代sum()
        total += num
        # 更新当前最大值
        if num > high:
            high = num
        # 更新当前最小值
        if num < low:
            low = num
    
    # 计算去掉最大、最小值后的平均值
    return (total - high - low) / (len(lst) - 2)

关键实现说明

  1. 变量初始化:

    • total初始化为0,用于手动累加所有元素的和
    • high和low直接用列表第一个元素初始化,省去原代码中冗余的a、b中间变量
  2. 单循环完成多任务:
    遍历列表时同时执行三个操作:

    • 将当前元素累加到total,实现手动求和
    • 对比更新当前最大值high
    • 对比更新当前最小值low
  3. 结果计算:
    用总和减去一个最大值和一个最小值,再除以剩余元素的数量(原列表长度减2),得到中心平均值。

原代码的问题修正点

  • 移除了无逻辑的elif语法错误
  • 删掉冗余的a、b变量,直接操作high和low
  • 用手动累加的total替代sum(lst),满足禁用sum()的要求
  • 简化循环内的重复赋值逻辑,让代码更简洁

内容的提问来源于stack exchange,提问作者eggroll

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:38:10