【发布时间】:2020-02-23 17:05:27
【问题描述】:
我有一个具有三个参数的函数 mean_univ,我希望它在满足以下给定条件之一时引发错误,
- x 不是列表
- x 包含除 int 或 float 以外的其他值,例如字符串
- 如果您作为方法输入的字符串不是“mean”或“tmean”
- 如果 alpha 不在 0 和 1 之间
当我定义例如x=[1,2,4,10,12]
我的代码没有引发异常(3.),我不知道如何实现 2. 和 4.
谢谢。
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
【问题讨论】:
-
我不知道如何实现 2 和 4。 有什么问题,你在哪个部分苦苦挣扎?
-
如果 x 是一个列表并且只有 int 或 float 值,该函数应该可以工作。但我不知道如果 x 是一个列表但包含一个字符串,“if 语句”需要如何查看。对于这种情况,我想要一个例外
-
对,我得到了那部分,我希望得到更具体的东西。您是否尝试过分解问题、编写伪代码等?
-
你能澄清你的问题吗?您显然已经知道如何检查类型和值。至于2:如果元素不是数字,
mean和tmean无论如何都会抛出错误。至于3:methodisn't 应该是一个字符串,你的函数需要另一个函数。至于 4:检查一个值是否小于/大于一个值是非常基本的,你到底在这里挣扎什么? -
对不起,我尝试指定它: 例如: 1. 步骤:用户将输入一个列表 x=[1,2,3,4,5,"red"]。然后他将运行函数 mean_univ(x,mean) 并发生错误。是的,会发生错误,但我想要一个特定的异常来告诉用户他需要调整列表。对于 3:1. 步骤:用户将输入一个列表 x=[1,2,3,4,5,]。然后他将运行函数 mean_univ(x,Hmean) 并出现 Hmean 未定义的错误。在这里,我想要一个特定的异常来告诉用户他尝试运行的方法不存在。对于 4:我想我已经找到了解决方案。
标签: python list if-statement input parameters