<p>在您的代码中,我看到了以下问题:</p>
<pre><code>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")
</code></pre>
<p>它被编码为如果<code>x</code>是一个列表,那么查看<code>method</code>以检查它是否在规范范围内。因此,只要为<code>x</code>输入了一个<code>list</code>,它就不会转到代码的<code>raise Exception("no list")</code>部分。您还需要在引号中加上“mean”和“tmean”。我对您的代码做了一些更改,它似乎起到了作用:</p>
<p><strong>我的代码</strong></p>
<pre><code>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")
</code></pre>
<p>所以<code>mean_univ([1,2,4,10,12] , method="mean")</code>给出了<code>5.8</code></p>
<p><code>mean_univ(3 , method="mean")</code>抛出一个<code>Exception: no list</code></p>
<p><code>mean_univ([1,2,3] , method="other")</code>给出<code>no available method</code></p>
<p>不知道你说的第四点是什么意思:</p>
<blockquote>
<p>if alpha isn't between 0 and 1</p>
</blockquote>
<p>因为alpha的默认值是-1。如果要为<code>alpha</code>添加值检查,则可以添加嵌套在<code>mean_univ</code>中的以下行</p>
<pre><code>if not 0 <= alpha <= 1:
return "Invalid alpha value"
</code></pre>