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

Python求均值中位数众数实现空列表返0及输入ValueError报错修复

错误原因

输入为空时,input().strip().split(' ') 会得到 [''],将空字符串传给int()转换就会触发你遇到的ValueError。同时现有代码还存在众数逻辑缩进错误、中位数计算优先级错误的问题,会导致返回结果不符合预期。

修复方案


1. 调整输入处理逻辑

先判断输入是否为空,为空直接初始化空列表,不执行类型转换操作。

2. 三个统计函数新增空列表判断

只要输入列表长度为0,直接返回0,避免后续运算报错。

3. 修复现有逻辑bug

  • 众数函数的return原写在遍历字典的for循环内部,只会遍历第一个key就返回,需要调整缩进层级
  • 中位数计算逻辑补充括号,避免运算优先级错误

完整修复后代码

# 定义中位数、众数、均值计算函数
def median(enterNumbers):
    if len(enterNumbers) == 0:
        return 0
    enterNumbers.sort()
    middle = len(enterNumbers) // 2
    if len(enterNumbers) % 2 == 1:
        return enterNumbers[middle]
    else:
        return (enterNumbers[middle] + enterNumbers[middle - 1]) / 2

def mode(enterNumbers):
    if len(enterNumbers) == 0:
        return 0
    numberDictionary = {}
    for digit in enterNumbers:
        number = numberDictionary.get(digit, None)
        if number is None:
            numberDictionary[digit] = 1
        else:
            numberDictionary[digit] = number + 1
    maxValue = max(numberDictionary.values())
    modeList = []
    for key in numberDictionary:
        if numberDictionary[key] == maxValue:
            modeList.append(key)
    return modeList

def mean(enterNumbers):
    if len(enterNumbers) == 0:
        return 0
    total = 0
    for num in enterNumbers:
        total += num
    return total / len(enterNumbers)

# 主函数
def main():
    input_str = input("Enter Numbers :  ").strip()
    if not input_str:
        enterNumbers = []
    else:
        enterNumbers = list(map(int, input_str.split(' ')))
    enterNumbers.sort()
    print("\n","     Number List     ","\n---------------------","\n",enterNumbers)
    print("\n","median, mode mean?","\n---------------------")
    answer = input()
    if answer == "median":
        res = median(enterNumbers)
    elif answer == "mode":
        res = mode(enterNumbers)
    elif answer == "mean":
        res = mean(enterNumbers)
    else:
        res = "无效输入"
    print(res)

main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:54:00