我正在我的大学学习python的初学者课程,我正在准备明天的例外测试。 我试图从列表中找出几何平均值。当我在列表中输入负值时,python计算几何平均值并给出一个复数(显然)。 但是,在我的测试准备工作中,我希望在列表中出现负值时引发异常,但我不知道如何执行此操作?会有人帮忙。
我在python3.4中工作。如果你想在这里看到我的代码。关于如何使我的代码更有效率的任何其他建议让我知道。提前谢谢。
#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))
答案 0 :(得分:3)
第一种方法,自己测试并引发异常。
第二种方法,使用math.pow
代替内置运算符。
答案 1 :(得分:1)
Python无法配置为更改此类基本行为,但您可以随时提出自己的异常。
def gm(L):
if any(x < 0 for x in L):
raise ValueError("List cannot have negative values")
...
答案 2 :(得分:1)
如果产品为负数,您可以明确地引发异常,例如:
if cnt < 0:
raise ValueError('Negative product')
geo = (cnt)**(1/len(L))
return geo
这是raising exceptions的教程。