我有一个带有三个参数的函数mean_univ,我希望当满足以下给定条件之一时,它会产生错误
例如,当我定义x=[1,2,4,10,12]
我的代码没有引发异常(3),我不知道如何实现2。四,。
谢谢
def mean_univ(x, method, alpha=-1):
if type(x) == list:
if method == mean:
return mean(x)
elif method ==tmean:
return tmean(x,alpha)
else:
raise Exception("no available method")
else:
raise Exception("no list")
def mean(x):
return print(float(sum(x)) / max(len(x), 1))
def tmean(x, alpha):
s = sorted(x)
a = round(alpha * len(x))
trimmed_list = s[a:-a]
if len(trimmed_list) == 0:
return
trimmed_ave = sum(trimmed_list)/len(trimmed_list)
return trimmed_ave
在您的代码中,我看到了以下问题:
它被编码为如果
x
是一个列表,那么查看method
以检查它是否在规范范围内。因此,只要为x
输入了一个list
,它就不会转到代码的raise Exception("no list")
部分。您还需要在引号中加上“mean”和“tmean”。我对您的代码做了一些更改,它似乎起到了作用:我的代码
所以
mean_univ([1,2,4,10,12] , method="mean")
给出了5.8
mean_univ(3 , method="mean")
抛出一个Exception: no list
mean_univ([1,2,3] , method="other")
给出no available method
不知道你说的第四点是什么意思:
因为alpha的默认值是-1。如果要为
alpha
添加值检查,则可以添加嵌套在mean_univ
中的以下行我提出了以下解决方案:
相关问题 更多 >
编程相关推荐