Ich nehme einen Anfängerkurs in Python an meiner Uni und ich habe morgen einen Test für Ausnahmen vorbereitet. Ich versuche das geometrische Mittel aus einer Liste zu berechnen. Wenn ich einen negativen Wert in die Liste gebe, berechnet Python das geometrische Mittel und gibt mir (offensichtlich) eine komplexe Zahl. Aber in prep für meinen Test möchte ich eine Ausnahme ausgelöst werden, wenn es einen negativen Wert in der Liste gibt, aber ich weiß nicht, wie das geht? Würde jemand helfen.Wie stoppe ich Python von Computing (-2)^0,5 in eine komplexe Zahl, und geben Sie mir eine Ausnahme statt
Ich arbeite in Python3.4. wenn du meinen Code hier sehen willst. andere Ratschläge, wie Sie meinen Code effizienter machen können, lassen Sie es mich wissen. Danke im Voraus.
#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))
Re: Zweite Methode: 'math.pow()' wird eine "ValueError: math domain error" Ausnahme auslösen, was in Ordnung ist, aber es wäre einfacher, nur die eingebaute 'pow()' Funktion zu verwenden löst einen "ValueError" aus: negative Zahl kann nicht zu einer Bruchzahl erhöht werden - was wohl expliziter ist und daher wahrscheinlich für die meisten Leute leichter zu verstehen ist. – martineau