From c9a94a19995a3ea4d125dd257f164d91597219c7 Mon Sep 17 00:00:00 2001 From: Adam Jurkiewicz Pythonista Local Date: Wed, 17 Dec 2025 08:58:04 +0100 Subject: [PATCH] przyklady --- dzien_03/{ => przyklady}/fake_data.py | 0 dzien_03/przyklady/r3_00.py | 25 +++++++++ dzien_03/przyklady/r3_00_float.py | 25 +++++++++ dzien_03/przyklady/r3_00_read.py | 48 +++++++++++++++++ dzien_03/przyklady/r3_01.py | 69 ++++++++++++++++++++++++ dzien_03/przyklady/r3_02.py | 77 +++++++++++++++++++++++++++ dzien_03/przyklady/r3_import.py | 5 ++ dzien_03/{ => przyklady}/simple_md.py | 0 8 files changed, 249 insertions(+) rename dzien_03/{ => przyklady}/fake_data.py (100%) create mode 100644 dzien_03/przyklady/r3_00.py create mode 100644 dzien_03/przyklady/r3_00_float.py create mode 100644 dzien_03/przyklady/r3_00_read.py create mode 100644 dzien_03/przyklady/r3_01.py create mode 100644 dzien_03/przyklady/r3_02.py create mode 100644 dzien_03/przyklady/r3_import.py rename dzien_03/{ => przyklady}/simple_md.py (100%) diff --git a/dzien_03/fake_data.py b/dzien_03/przyklady/fake_data.py similarity index 100% rename from dzien_03/fake_data.py rename to dzien_03/przyklady/fake_data.py diff --git a/dzien_03/przyklady/r3_00.py b/dzien_03/przyklady/r3_00.py new file mode 100644 index 0000000..7c329e4 --- /dev/null +++ b/dzien_03/przyklady/r3_00.py @@ -0,0 +1,25 @@ +# program r3_00.py +# Pierwsze wczytywanie danych i walidacja + +# Definiujemy funkcję wczytującą dane +def read_datas(): + h_start = input("Teraz podaj wysokość początkową (w m): ") + v_start = input("Teraz podaj prędkość początkową (w m/sek) :") + + if h_start < 10: + print("Niestety, wysokość zbyt niska (min. 10 m)!") + return None + + if v_start < 2: + print("Niestety, prędkość początkowa zbyt niska (min. 2 m/s)!") + return None + + return (h_start, v_start) + + +initial_values = None +while initial_values is None: + print("Proszę, podaj dane niezbędne do wygenerowania wykresu.") + initial_values = read_datas() + +print("OK, dane początkowe wczytane - działamy dalej.") diff --git a/dzien_03/przyklady/r3_00_float.py b/dzien_03/przyklady/r3_00_float.py new file mode 100644 index 0000000..9b101c4 --- /dev/null +++ b/dzien_03/przyklady/r3_00_float.py @@ -0,0 +1,25 @@ +# program r3_00_float.py +# Pierwsze wczytywanie danych i walidacja + +# Definiujemy funkcję wczytującą dane +def read_datas(): + h_start = float(input("Teraz podaj wysokość początkową (w m): ")) + v_start = float(input("Teraz podaj prędkość początkową (w m/sek) :")) + + if h_start < 10: + print("Niestety, wysokość zbyt niska (min. 10 m)!") + return None + + if v_start < 2: + print("Niestety, prędkość początkowa zbyt niska (min. 2 m/s)!") + return None + + return (h_start, v_start) + + +initial_values = None +while initial_values is None: + print("Proszę, podaj dane niezbędne do wygenerowania wykresu.") + initial_values = read_datas() + +print("OK, dane początkowe wczytane - działamy dalej.") diff --git a/dzien_03/przyklady/r3_00_read.py b/dzien_03/przyklady/r3_00_read.py new file mode 100644 index 0000000..904fb0a --- /dev/null +++ b/dzien_03/przyklady/r3_00_read.py @@ -0,0 +1,48 @@ +# program r3_00_read.py +# Pierwsze wczytywanie danych i walidacja - funkcja read_datas ostateczna + + +# Definiujemy funkcję wczytującą dane +def read_datas(): + def float_input(user_info, user_prompt, min_value): + print("---[ wczytujemy dane]------------") + print(user_info) + user_input = input(user_prompt) + if user_input.count(".") > 1: + return None + + if not user_input.replace(".", "").isdecimal(): + return None + + user_value = float(user_input) + if user_value < min_value: + print(f"Wartość {user_value} jest mniejsza niż oczekiwana {min_value}.") + return None + return user_value + + h_start = None + v_start = None + + while h_start is None: + h_start = float_input( + "Brak poprawnej wartości dla h_start. Typ float (np: 3.14)", + "Teraz podaj wysokość początkową (w m, min. 10): ", + 10, + ) + + while v_start is None: + v_start = float_input( + "Brak poprawnej wartości dla v_start. Typ float (np: 3.14)", + "Teraz podaj prędność początkową (w m/sek, min. 2) :", + 2, + ) + + return (h_start, v_start) + + +initial_values = None +while initial_values is None: + print("Proszę, podaj dane niezbędne do wygenerowania wykresu.") + initial_values = read_datas() + +print("OK, dane początkowe wczytane - działamy dalej.") diff --git a/dzien_03/przyklady/r3_01.py b/dzien_03/przyklady/r3_01.py new file mode 100644 index 0000000..fc0d5e3 --- /dev/null +++ b/dzien_03/przyklady/r3_01.py @@ -0,0 +1,69 @@ +# program r3_01.py +# Obliczenia danych do wykresu +# Podstawowy rysunek miejsca startu i spadku + +import matplotlib.pyplot as plt + +# Definiujemy funkcję wczytującą dane +def read_datas(): + def float_input(user_info, user_prompt, min_value): + print("---[ wczytujemy dane]------------") + print(user_info) + user_input = input(user_prompt) + if user_input.count(".") > 1: + return None + + if not user_input.replace(".", "").isdecimal(): + return None + + user_value = float(user_input) + if user_value < min_value: + print(f"Wartość {user_value} jest mniejsza niż oczekiwana {min_value}.") + return None + return user_value + + h_start = None + v_start = None + + while h_start is None: + h_start = float_input( + "Brak poprawnej wartości dla h_start. Typ float (np: 3.14)", + "Teraz podaj wysokość początkową (w m, min. 10): ", + 10, + ) + + while v_start is None: + v_start = float_input( + "Brak poprawnej wartości dla v_start. Typ float (np: 3.14)", + "Teraz podaj prędność początkową (w m/s, min. 2) :", + 2, + ) + + return (h_start, v_start) + + +initial_values = None +while initial_values is None: + print("Proszę, podaj dane niezbędne do wygenerowania wykresu.") + initial_values = read_datas() + +print("OK, dane początkowe wczytane - działamy dalej.") + +# Rozpakowywanie tupli +H_START, V_START = initial_values + +# Obliczamy najważniejsze wartości + +g = 9.81 # m/s^2 +total_time = ((2 * H_START) / g) ** (1 / 2) +max_range = V_START * total_time + +# Dodajemy wykres i umieszczamy punkt startu i spadku +title = f"""Wykres rzutu poziomego z V_START = {V_START} m/s (g = {g} m/s^2) + Czas lotu = {round(total_time,4)} s.""" +plt.scatter(0, H_START, label=f"H_START={H_START} m") +plt.scatter(max_range, 0, label=f"max_range={round(max_range,3)} m") +plt.grid() +plt.title(title) +plt.legend() +plt.show() diff --git a/dzien_03/przyklady/r3_02.py b/dzien_03/przyklady/r3_02.py new file mode 100644 index 0000000..b74358c --- /dev/null +++ b/dzien_03/przyklady/r3_02.py @@ -0,0 +1,77 @@ +# program r3_02.py +# Pełny wykres + +import matplotlib.pyplot as plt +import numpy as np + +# Definiujemy funkcję wczytującą dane +def read_datas(): + def float_input(user_info, user_prompt, min_value): + print("---[ wczytujemy dane]------------") + print(user_info) + user_input = input(user_prompt) + if user_input.count(".") > 1: + return None + + if not user_input.replace(".", "").isdecimal(): + return None + + user_value = float(user_input) + if user_value < min_value: + print(f"Wartość {user_value} jest mniejsza niż oczekiwana {min_value}.") + return None + return user_value + + h_start = None + v_start = None + + while h_start is None: + h_start = float_input( + "Brak poprawnej wartości dla h_start. Typ float (np: 3.14)", + "Teraz podaj wysokość początkową (w m, min. 10): ", + 10, + ) + + while v_start is None: + v_start = float_input( + "Brak poprawnej wartości dla v_start. Typ float (np: 3.14)", + "Teraz podaj prędność początkową (w m/s, min. 2) :", + 2, + ) + + return (h_start, v_start) + + +initial_values = None +while initial_values is None: + print("Proszę, podaj dane niezbędne do wygenerowania wykresu.") + initial_values = read_datas() + +print("OK, dane początkowe wczytane - działamy dalej.") + +# Rozpakowywanie tupli +H_START, V_START = initial_values + +# Obliczamy najważniejsze wartości + +g = 9.81 # m/s^2 +total_time = ((2 * H_START) / g) ** (1 / 2) +max_range = V_START * total_time + +# Obliczamy kolejne wartości Y dla X co 1/100 ogólnego zasięgu +x_points = np.arange(0, max_range, max_range / 100) +y_points = H_START - ((g / 2) * (x_points / V_START) ** 2) + +# dodajemy wykres i umieszczamy punkt startu i spadku +title = f"""Wykres rzutu poziomego z V_START = {V_START} m/s (g = {g} m/s^2) + Czas lotu = {round(total_time,4)} s.""" + +plt.scatter(0, H_START, label=f"H_START={H_START} m") +plt.scatter(max_range, 0, label=f"max_range={round(max_range,3)} m") +plt.plot(x_points, y_points, marker="+", color="red", label="Kolejne punkty rzutu.") +plt.grid() +plt.title(title) +plt.xlabel("Odległość w metrach") +plt.ylabel("Wysokość w metrach") +plt.legend() +plt.show() diff --git a/dzien_03/przyklady/r3_import.py b/dzien_03/przyklady/r3_import.py new file mode 100644 index 0000000..ef199ac --- /dev/null +++ b/dzien_03/przyklady/r3_import.py @@ -0,0 +1,5 @@ +# program r3_import.py +# + +# wykorzystujemy znany nam już moduł +import matplotlib.pyplot as plt diff --git a/dzien_03/simple_md.py b/dzien_03/przyklady/simple_md.py similarity index 100% rename from dzien_03/simple_md.py rename to dzien_03/przyklady/simple_md.py