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

Python计算输入数据均值和标准差时stdev函数报数据类型错误如何解决

报错原因
  1. 核心问题是variance函数的返回值是用"{:.2f}".format()格式化后的字符串类型,而stdev函数里调用math.sqrt(var)时要求入参必须是数值类型,传入字符串直接触发类型错误。
  2. 代码还存在几个隐含问题:
    • meanfunction函数同样返回格式化字符串,虽然当前打印不会报错,但如果后续需要用返回值做其他数值计算也会出现同类问题
    • stdev函数定义前存在多余缩进,不符合Python语法规范
    • main函数里meanfunction(a)、stdev(a)两次调用没有接收返回值,属于冗余代码
修正方案

将数值计算和结果格式化分离:计算函数只返回原始数值,打印输出的时候再做格式化处理,保证计算链路里的变量都是数值类型,同时修正缩进问题、删除冗余调用即可。

修正后完整代码如下:

def main():
    print("Enter the data, one value per line.\nEnd by entering empty line.")
    a = []
    prompt = ""
    line = input(prompt)

    while line:
        a.append(float(line))
        line = input(prompt)
    
    # 打印时统一做格式化处理
    print("The mean of given data was: {:.2f}".format(meanfunction(a)))
    print("The standard deviation of given data was: {:.2f}".format(stdev(a)))

def meanfunction(data):
    average = sum(data) / len(data)
    # 直接返回数值,不提前做格式化
    return average

def variance(data):
    n = len(data)
    mean = sum(data) / n
    deviations = [(x - mean) ** 2 for x in data]
    variance = sum(deviations) / n
    # 直接返回数值,不提前做格式化
    return variance

def stdev(data):
    import math
    var = variance(data)
    std_dev = math.sqrt(var)
    return std_dev

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:03