Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用特定参数作为输入的Python函数,异常_Python_List_If Statement_Input_Parameters - Fatal编程技术网

使用特定参数作为输入的Python函数,异常

使用特定参数作为输入的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

我有一个带有三个参数的函数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) == 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
    如果元素不是数字,则无论如何都会抛出一个错误。作为