使用特定参数作为输入的Python函数,异常
我有一个带有三个参数的函数mean_univ,我希望当满足以下给定条件之一时,它会产生错误使用特定参数作为输入的Python函数,异常,python,list,if-statement,input,parameters,Python,List,If Statement,Input,Parameters,我有一个带有三个参数的函数mean_univ,我希望当满足以下给定条件之一时,它会产生错误 x不是一个列表 x包含除int或float以外的其他值,例如字符串 如果作为方法输入的字符串不是“mean”或“tmean” 如果alpha不在0和1之间 例如,当我定义x=[1,2,4,10,12] 我的代码没有引发异常(3),我不知道如何实现2。四,。 谢谢 在您的代码中,我看到了以下问题: def mean_univ(x, method, alpha=-1): if type(x) == lis
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:
return print("no available method")
else:
raise Exception("no list")
它编码为如果x
是一个列表,则查看方法
以检查它是否在规范范围内。因此,只要为x
输入了列表
,它就不会进入引发异常(“无列表”)
代码段。您还需要在引号中加上“mean”和“tmean”。我对您的代码做了一些更改,它似乎起到了作用:
我的代码
def mean_univ(x, method, alpha=-1):
if not isinstance(x, list):
raise Exception("no list")
if method == "mean":
return mean(x)
elif method == "tmean":
return tmean(x,alpha)
else:
return print("no available method")
因此,mean_univ([1,2,4,10,12],method=“mean”)
给出了5.8
mean\u univ(3,method=“mean”)
抛出一个异常:无列表
mean_univ([1,2,3],method=“other”)
给出了没有可用的方法
不知道你说的第四点是什么意思:
如果alpha不在0和1之间
因为alpha的默认值是-1。如果要为alpha
添加值检查,则可以在mean\u univ
if not 0 <= alpha <= 1:
return "Invalid alpha value"
如果代码中没有0,我会看到以下问题:
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:
return print("no available method")
else:
raise Exception("no list")
它编码为如果x
是一个列表,则查看方法
以检查它是否在规范范围内。因此,只要为x
输入了列表
,它就不会进入引发异常(“无列表”)
代码段。您还需要在引号中加上“mean”和“tmean”。我对您的代码做了一些更改,它似乎起到了作用:
我的代码
def mean_univ(x, method, alpha=-1):
if not isinstance(x, list):
raise Exception("no list")
if method == "mean":
return mean(x)
elif method == "tmean":
return tmean(x,alpha)
else:
return print("no available method")
因此,mean_univ([1,2,4,10,12],method=“mean”)
给出了5.8
mean\u univ(3,method=“mean”)
抛出一个异常:无列表
mean_univ([1,2,3],method=“other”)
给出了没有可用的方法
不知道你说的第四点是什么意思:
如果alpha不在0和1之间
因为alpha的默认值是-1。如果要为alpha
添加值检查,则可以在mean\u univ
if not 0 <= alpha <= 1:
return "Invalid alpha value"
如果不是0我想出了以下解决方案:
def mean_univ(x, method, alpha=-1):
if not isinstance(x, list):
raise ValueError("x is not list")
if any(not isinstance(item, int) and not isinstance(item, float) for item in x):
raise ValueError("x does not contains proper values")
if method != "mean" and method != "tmean":
raise ValueError("Incorrect method")
if alpha <= 0 or alpha >= 1:
raise ValueError("Incorrect alpha")
if method == "mean":
return mean(x)
elif method =="tmean":
return tmean(x,alpha)
else:
return print("no available method")
def mean_univ(x,方法,alpha=-1):
如果不存在(x,列表):
提升值错误(“x不是列表”)
如果有(x中项目的非isinstance(项目,整数)和非isinstance(项目,浮动)):
raise VALUERROR(“x不包含正确的值”)
如果方法!=“平均值”和方法!=“tmean”:
raise VALUE错误(“不正确的方法”)
如果α=1:
提升值错误(“不正确的alpha”)
如果方法==“平均值”:
返回平均值(x)
elif方法==“tmean”:
返回tmean(x,alpha)
其他:
返回打印(“无可用方法”)
我想出了以下解决方案:
def mean_univ(x, method, alpha=-1):
if not isinstance(x, list):
raise ValueError("x is not list")
if any(not isinstance(item, int) and not isinstance(item, float) for item in x):
raise ValueError("x does not contains proper values")
if method != "mean" and method != "tmean":
raise ValueError("Incorrect method")
if alpha <= 0 or alpha >= 1:
raise ValueError("Incorrect alpha")
if method == "mean":
return mean(x)
elif method =="tmean":
return tmean(x,alpha)
else:
return print("no available method")
def mean_univ(x,方法,alpha=-1):
如果不存在(x,列表):
提升值错误(“x不是列表”)
如果有(x中项目的非isinstance(项目,整数)和非isinstance(项目,浮动)):
raise VALUERROR(“x不包含正确的值”)
如果方法!=“平均值”和方法!=“tmean”:
raise VALUE错误(“不正确的方法”)
如果α=1:
提升值错误(“不正确的alpha”)
如果方法==“平均值”:
返回平均值(x)
elif方法==“tmean”:
返回tmean(x,alpha)
其他:
返回打印(“无可用方法”)
我不知道如何实现2和4。问题出在哪一部分?如果x是一个列表,并且只有int或float值,那么函数应该可以工作。但我不知道如果x是一个列表,但包含一个字符串,“if语句”应该是什么样子。对于这个案例,我想要一个例外,对,我得到了那个部分,我希望得到更具体的东西。您是否尝试过解决问题、编写伪代码等?能否澄清您的问题?显然,您已经知道如何检查类型和值。至于2:mean
和tmean
如果元素不是数字,则无论如何都会抛出一个错误。对于3:方法
不应该是字符串,您的函数需要另一个函数。至于4:检查一个值是否小于或大于一个值是非常基本的,您在这里到底在做什么?抱歉,我尝试指定它:例如:1。步骤:用户将输入一个列表x=[1,2,3,4,5,“红色”]。然后,他将运行函数mean_univ(x,mean),并出现错误。是的,出现错误,但我需要一个特定的异常来告诉用户他需要调整列表。三比一。步骤:用户将输入一个列表x=[1,2,3,4,5]。然后他将运行mean_univ(x,Hmean)函数,出现一个未定义Hmean的错误。这里我需要一个特定的异常来告诉用户他试图运行的方法不存在。对于4:我想我已经找到了解决这一点的方法。我不知道如何实现2和4。问题出在哪一部分?如果x是一个列表,并且只有int或float值,那么函数应该可以工作。但我不知道如果x是一个列表,但包含一个字符串,“if语句”应该是什么样子。对于这个案例,我想要一个例外,对,我得到了那个部分,我希望得到更具体的东西。您是否尝试过解决问题、编写伪代码等?能否澄清您的问题?显然,您已经知道如何检查类型和值。至于2:mean
和tmean
如果元素不是数字,则无论如何都会抛出一个错误。作为