Hallo, Leute
ich habe gerade Schwierigkeiten mit meinem Code.
da unten stehen Aufgaben und mein Code.
mein Code sieht so aus. Und bei Aufgabe 3 funktioniert irgendwie nicht.
wahrscheinlich kann Jemand mir beibringen, warum es nicht funktioniert?
-------------------------------
Ein Skispringer mit einer Masse von 60,0 kg startet aus der Ruhe in einer Höhe von 27 m über dem Ende einer Sprungschanze (siehe Abbildung). In dem Moment, in dem der Skispringer die Schanze verlässt, bildet seine Geschwindigkeit einen Winkel von 28 ° relativ zur Horizontalen. Vernachlässigen Sie den Luftwiderstand und nehmen Sie an, dass die Schanze reibungsfrei ist.
Erstellen Sie für die Lösung ein Python Skript, welches folgende Schritte ausführt:
1.Weisen Sie der Variable v_ms den Betrag der Geschwindigkeit in m/szu, mit der der Skifahrer die Schanze verlässt.
2.Weisen Sie der variable hmax_m Maximalhöhe über dem Ende der Schanze in Metern zu, die der Skispringer während seines Sprungs erreicht
3.Wenn der Skispringer seine Masse durch einen Rucksack der Masse 10 kg vergrößern würde, wäre die maximale Flughöhe hmax_m dann (a) größer, (b) kleiner oder (c) genauso groß wie zuvor? Weisen Sie hierfür der Variable Antwort zunächst eine Liste der Länge 3 (einen Vektor) zu, die drei Zahlen enthält. Setzen Sie das Element des Vektors, dass der richtigen Antwort entspricht auf den Wert 1 und belassen die drei anderen Elemente bei 0 (für die Antwort (a) soll nur das erste Element des Vektors 1 sein, für die Antwort (b) soll nur das zweite Element und für die Antwort (c) nur das dritte Element).
-----------------------------------
########################
import math
# Gegebene Werte
masse_springer_kg = 60.0 # Masse des Skispringers in kg
hohe_start_m = 27 # Höhe des Starts über dem Ende der Schanze in Metern
winkel_grad = 28 # Winkel der Geschwindigkeit relativ zur Horizontalen in Grad
masse_rucksack_kg = 10.0 # Masse des Rucksacks in kg
g = 9.81 # Erdbeschleunigung in m/s^2
# Umrechnung des Winkels von Grad in Radiant
winkel_rad = math.radians(winkel_grad)
# Berechnung der Geschwindigkeit beim Verlassen der Schanze (v)
v_ms = math.sqrt(2 * 9.81 * hohe_start_m)
# Berechnung der maximalen Flughöhe (hmax)
hmax_m = (v_ms**2 * math.sin(winkel_rad)**2) / (2 * 9.81)
# Berechnung der maximalen Flughöhe mit dem Rucksack (hmax_rucksack)
masse_springer_rucksack_kg = masse_springer_kg + masse_rucksack_kg
hmax_rucksack_m = (v_ms**2 * math.sin(winkel_rad)**2) / (2 * 9.81 * masse_springer_rucksack_kg)
# Überprüfung, ob die maximale Flughöhe mit dem Rucksack größer, kleiner oder gleich der ursprünglichen maximalen Flughöhe ist
antwort = [0, 0, 0] # Antwortvektor [a, b, c]
if hmax_rucksack_m > hmax_m:
antwort[0] = 1 # Antwort (a) - größer
elif hmax_rucksack_m < hmax_m:
antwort[1] = 1 # Antwort (b) - kleiner
else:
antwort[2] = 1 # Antwort (c) - genauso groß
# Ausgabe der Ergebnisse
print("Geschwindigkeit beim Verlassen der Schanze (v):", v_ms, "m/s")
print("Maximale Flughöhe über dem Ende der Schanze (hmax):", hmax_m, "m")
print("Antwort:",antwort)
########################
Python für Physik
- __blackjack__
- User
- Beiträge: 13931
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@tkmblcg: „funktioniert irgendwie nicht“ ist keine sinnvolle Fehlerbeschreibung. *Was* funktioniert nicht? Was passiert? Was hättest Du stattdessen erwartet und warum?
Anmerkungen zum Quelltext: Kommentare sollen dem Leser einen Mehrwert über den Code geben. Faustregel: Kommentare beschreiben nicht *was* der Code macht, denn das steht da bereits als Code, sondern warum er das macht. Sofern das nicht offensichtlich ist. Offensichtlich ist in aller Regel auch was in der Dokumentation von Python und den verwendeten Bibliotheken steht.
Wenn man einen Wert an einen Namen bindet, sollte man den Namen dann auch verwenden, und nicht noch ein paar mal den Wert ins Programm schreiben.
Anmerkungen zum Quelltext: Kommentare sollen dem Leser einen Mehrwert über den Code geben. Faustregel: Kommentare beschreiben nicht *was* der Code macht, denn das steht da bereits als Code, sondern warum er das macht. Sofern das nicht offensichtlich ist. Offensichtlich ist in aller Regel auch was in der Dokumentation von Python und den verwendeten Bibliotheken steht.
Wenn man einen Wert an einen Namen bindet, sollte man den Namen dann auch verwenden, und nicht noch ein paar mal den Wert ins Programm schreiben.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Du hast sehr viel kopierten Code. Geschwindigkeiten oder Höhen werden immer explizit an verschiedenen Stellen berechnet. Physik und Programmieren bauen aber auf generischen Methoden auf.
Um also die Physik in Python abzubilden, wird es sich anbieten, Funktion zu schreiben die Lageenergie in Höhe und Höhe in Lageenergie umrechnen. Und ebenso Bewegungsenergie in Geschwindigkeit oder Geschwindigkeit in Bewegungsenergie. Das Hauptprogramm besteht dann nur noch aus einer Aneinanderreihung dieser Umformung.
Um also die Physik in Python abzubilden, wird es sich anbieten, Funktion zu schreiben die Lageenergie in Höhe und Höhe in Lageenergie umrechnen. Und ebenso Bewegungsenergie in Geschwindigkeit oder Geschwindigkeit in Bewegungsenergie. Das Hauptprogramm besteht dann nur noch aus einer Aneinanderreihung dieser Umformung.