@010010: »eval« sollte man nicht benutzen. Wenn Du Zahleneingaben erlaubst, kannst Du den eingegebenen String per »int« bzw. hier »float« in eine Zahl umwandeln. Das Prüfen auf einen leeren String ist auch ganz einfach. Der Fall a=0 oder b=0 läßt sich leicht zusammenfassen. Per Konvention werden immer 4 Leerzeichen pro Ebene benutzt, nicht 3.
Code: Alles auswählen
print("Bitte geben Sie für den gesuchten nichts ein!")
a = input("a=")
b = input("b=")
c = input("c=")
if not c:
a = float(a)
b = float(b)
result = (a**2 + b**2) ** 0.5
elif not a or not b:
a = float(a or b)
c = float(c)
result = (c**2 - a**2) ** 0.5
print("Die fehlende Seite ist {0:.3f}".format(result))
Jetzt fehlt noch etwas Fehlerbehandlung. Was passiert wenn keine Zahl eingegeben wird? Was passiert wenn c zu kurz ist? Dazu schreiben wir eine Funktion, die die Eingabe verarbeitet und prüft. Und da man am besten jeden Code in eine Funktion schreibt, auch gleich noch eine main-Funktion:
Code: Alles auswählen
def input_float_or_none(prompt):
while True:
result = input(prompt)
if not result:
return None
try:
return float(result)
except ValueError:
print("Bitte eine Zahl oder nichts eingeben!")
def main():
print("Bitte geben Sie für den gesuchten nichts ein!")
a = input_float_or_none("a=")
b = input_float_or_none("b=")
c = input_float_or_none("c=")
if bool(a) + bool(b) + bool(c) < 2:
print("Mehr als eine Seite ist leer!")
elif not c:
result = (a**2 + b**2) ** 0.5
elif not a or not b:
try:
result = (c**2 - (a or b)**2) ** 0.5
except ValueError:
print("Seite c zu kurz!")
return
else:
print("Mindestens eine Seite sollte leer bleiben!")
print("Die fehlende Seite ist {0:.3f}".format(result))
if __name__ == '__main__':
main()