输入Alpha值计算均值方差时报TypeError错误的求助
问题解决:输入alpha值时报TypeError的原因及修复
错误原因
input()函数返回的是字符串类型,当你输入1.625时,变量a是字符串"1.625",而np.sqrt(var/len(data))返回的是numpy浮点型数值。字符串只能和整数相乘(实现字符串重复),无法和numpy浮点型数值相乘,因此触发TypeError。未输入内容时,a被赋值为默认值1.96(浮点型),所以功能正常。
修复代码
只需要将输入的内容转换为浮点型即可,修改a的赋值语句:
import numpy as np import matplotlib.pyplot as plt import pandas as pd from scipy import stats def estimat(data): var = np.var(data, ddof = 1) forv = np.mean(data) z = a*np.sqrt(var/len(data)) konf = {forv+z,forv-z} return {"varians": var, "forventning":forv, "konfidensintervall":konf} x = stats.norm.rvs(0,1,100) # 将输入转换为float类型,默认值保持1.96 a_input = input("Enter your alpha: ") a = float(a_input) if a_input.strip() else 1.96 print(estimat(x))
额外优化建议
- 函数直接使用全局变量
a不够规范,建议将a作为参数传入函数,让函数逻辑更独立:def estimat(data, a): var = np.var(data, ddof = 1) forv = np.mean(data) z = a*np.sqrt(var/len(data)) konf = {forv+z,forv-z} return {"varians": var, "forventning":forv, "konfidensintervall":konf} # 调用时传入a参数 print(estimat(x, a)) - 原返回字典里的键
"forventning,"多了个逗号,建议修正为"forventning",避免后续使用时出现键名错误。
内容的提问来源于stack exchange,提问作者hihixd
相关产品推荐
相关产品推荐

