如何阻止python将(-2)^0.5计算为复数,并给出一个异常
我正在我的大学学习python初学者课程,明天我要准备一个关于异常的测试。 我正试图从列表中算出几何平均数。当我在列表中输入一个负值时,python会计算几何平均值并给出一个复数。 然而,在为我的测试做准备的过程中,当列表中有负值时,我希望引发一个异常,但我不知道如何做到这一点?有人能帮忙吗 我在python3.4工作。如果你想在这里看到我的代码。关于如何提高代码效率的任何其他建议,请告知我。提前谢谢如何阻止python将(-2)^0.5计算为复数,并给出一个异常,python,python-3.4,Python,Python 3.4,我正在我的大学学习python初学者课程,明天我要准备一个关于异常的测试。 我正试图从列表中算出几何平均数。当我在列表中输入一个负值时,python会计算几何平均值并给出一个复数。 然而,在为我的测试做准备的过程中,当列表中有负值时,我希望引发一个异常,但我不知道如何做到这一点?有人能帮忙吗 我在python3.4工作。如果你想在这里看到我的代码。关于如何提高代码效率的任何其他建议,请告知我。提前谢谢 #LOAD A LIST while Tru
#LOAD A LIST
while True:
try:
string = input("please enter a list of numbers separated by commas \n:",)
L = [float(x) for x in string.split(",")]
#print(L)
break
except ValueError:
print("There seems to be a value error in that list")
pass
#COMPUTE GEOMETRIC MEAN
def gm(L):
cnt = 1
try:
for i in range(len(L)):
cnt=cnt*L[i]
geo = (cnt)**(1/len(L))
return geo
except ValueError:
print("Value error!")
except TypeError:
print("type error!")
print("geometric mean is, ", gm(L))
Python不能被配置为改变这些基本行为,但您可以随时提出自己的异常
def gm(L):
if any(x < 0 for x in L):
raise ValueError("List cannot have negative values")
...
Python不能被配置为改变这些基本行为,但您可以随时提出自己的异常
def gm(L):
if any(x < 0 for x in L):
raise ValueError("List cannot have negative values")
...
如果产品为负数,您可以显式引发异常,例如:
if cnt < 0:
raise ValueError('Negative product')
geo = (cnt)**(1/len(L))
return geo
以下是有关的教程。如果产品为负值,您可以显式引发异常,例如:
if cnt < 0:
raise ValueError('Negative product')
geo = (cnt)**(1/len(L))
return geo
这里有一个关于第一种方法的教程,您自己测试并引发异常
第二种方法,使用math.pow而不是内置运算符。第一种方法,自己测试并引发异常 第二种方法,使用math.pow而不是内置运算符。Re:Second-method:math.pow将引发ValueError:math-domain错误异常,这很好,但只使用内置pow函数会更简单,因为它会引发ValueError:负数不能被提升为分数次幂-这可以说是更明确的,因此对大多数人来说可能更容易理解。Re:Second method:math.pow会引发ValueError:math domain error exception,这很好,但是,只使用内置的pow函数会更简单,因为它会引发一个ValueError:负数不能被提升为分数次幂——这可以说是更明确的,因此对大多数人来说可能更容易理解。