Ich bin dabei, mich ein wenig in Python einzuarbeiten.
Ich habe dazu einen entsprechenden Programmcode geschrieben, um eine Berechnung eines "Rechtwinkligen" Dreiecks zu erstellen.
Der Ablauf ist folgender:
Für eine Berechnung müssen 2 Werte bekannt sein. Entweder zwei Katheten oder eine Kathete und der Winkel alpha (Spitzenwinkel)
Bei Programmstart werden zunächst 2 Katheten abgefragt. Unbekannte werden mit "0" eingegeben.
Sind die ersten beiden nicht 0, wird sofort die Berechnung durchgeführt und die anderen beiden Werte werden als Ergebnis ausgegeben.
Ist einer der ersten beiden Werte unbekannt, wird eine dritte Kathete abgefragt. Sind wieder zwei bekannte vorhanden, wird wieder berechnet und das Ergebnis ausgegeben.
Falls nicht, wird der Winkel auch noch abgefragt.
Den Code habe ich komplett selber geschreiben. (Kein Copy/Paste)
Das Programm läuft einwandfrei.
Meine Frage ist, ob der Code so "ok" ist, oder ob ich da noch etwas verändern sollte. ( Vorschläge hinsichtlich Verbesserungen nehme ich gerne an.)
# Dreiecksberechnung im Rechtwinkligen Dreieck
# Zur Berechnung sind 2 bekannte Größen erforderlich, die anderen beiden Werte werden berechnet
# Unbekannte Werte werden bei der Abfrage mit "0" eingegeben
import math
def output1(text, value): # Funktionen für die Ausgabe
print()
print(text + value)
def output2(text, value):
print(text + value)
side_a = float(input('Gegenkathete_A ')) # Eingabe der bekannten Größen (a und b werden direkt abgefragt)
side_b = float(input('Ankathete_B ')) # (unbekannte Werte werden mit "0" angegeben
side_c = 0 # Diese beiden werte werden erst einmal auf "0"
angle_alpha = 0 # gesetzt und bei Bedarf abgefragt
if side_a == 0 or side_b == 0:
side_c = float(input('Hypothenuse_C ')) # Wird abgefragt, falls a oder b unbekannt
if side_a == 0 and side_b == 0:
angle_alpha = float(input('Winkel_alpha ')) # Wird abgefragt falls bei a, b, und c 2 unbekannte
elif side_a == 0 and side_c == 0:
angle_alpha = float(input('Winkel_alpha '))
elif side_b == 0 and side_c == 0:
angle_alpha = float(input('Winkel_alpha '))
if side_a > 0 and side_b > 0: # Berechnung der verschiedenen Möglichkeiten
w1 = math.degrees(math.atan(side_a / side_b)) # und Ausgabe des Ergebnisses
c1 = math.sqrt((side_a * side_a) + (side_b * side_b))
output1('Hypothenuse_C = ', (str(c1)))
output2('Winkel_Alpha = ', (str(w1)))
if side_a > 0 and side_c > 0:
w1 = math.degrees(math.asin(side_a / side_c))
b1 = math.sqrt((side_c * side_c) - (side_a * side_a))
output1('Ankathete_B = ', (str(b1)))
output2('Winkel_Alpha = ', (str(w1)))
if side_b > 0 and side_c > 0:
w1 = math.degrees(math.acos(side_b / side_c))
a1 = math.sqrt((side_c * side_c) - (side_b * side_b))
output1('Gegenkathete_A = ', (str(a1)))
output2('Winkel_Alpha = ', (str(w1)))
if side_a > 0 and angle_alpha > 0:
b1 = (side_a / math.tan(math.radians(angle_alpha)))
c1 = (side_a / math.sin(math.radians(angle_alpha)))
output1('Ankathete_B = ', (str(b1)))
output2('Hypothenuse_C = ', (str(c1)))
if side_b > 0 and angle_alpha > 0:
a1 = (side_b * math.tan(math.radians(angle_alpha)))
c1 = (side_b / math.cos(math.radians(angle_alpha)))
output1('Gegenkathete_A = ', (str(a1)))
output2('Hypothenuse_C = ', (str(c1)))
if side_c > 0 and angle_alpha > 0:
a1 = (side_c * math.sin(math.radians(angle_alpha)))
b1 = (side_c * math.cos(math.radians(angle_alpha)))
output1('Gegenkathete_A = ', (str(a1)))
output2('Ankathete_B = ', (str(b1)))
print()
input('Press enter to exit')
Alles anzeigen
Gegenkathete_A 6
Ankathete_B 8
Hypothenuse_C = 10.0
Winkel_Alpha = 36.86989764584402
Press enter to exit
Gegenkathete_A 0
Ankathete_B 8
Hypothenuse_C 10
Gegenkathete_A = 6.0
Winkel_Alpha = 36.86989764584401
Press enter to exit
Gegenkathete_A 0
Ankathete_B 0
Hypothenuse_C 10
Winkel_alpha 36.86989764584401
Gegenkathete_A = 5.999999999999998
Ankathete_B = 8.0
Press enter to exit
Alles anzeigen