Ćwiczenia Programowanie 1R
Zajęcia z wstępu do Pythona i jego zastosowań w fizyce. Ćwiczenia do wykładu dr Grzegorza Łacha (strona wykładu).
Zajęcia
Ćwiczenia grupa 4, semestr letni 2025/2026
Wtorek, 15:15 - 17:00
Sala 1.29
Ćwiczenia głównie w oparciu o zadania przygotowane przez Bartłomieja Zglinickiego, udostępnione na licencji CC BY 4.0.
Problemy z jupyterem
Niestety nadal nie wiem, dlaczego na pierwszych zajęciach u większości z Was nie zadziałały notatniki jupytera (pliki .ipynb) w VSCode.
Można je uruchomić poza VSCode. Żeby to zrobić, należy uruchomić terminal, przejść do katalogu, w którym znajduje się plik .ipynb
i wykonać komendę jupyter notebook. Wtedy uruchomi się edytor jupytera w przeglądarce, w którym można kliknąć w plik .ipynb
i tam powinien działać.
Problemy z matplotlibem
U jednej osoby pojawił się problem z matplotlibem: mimo wywołania funkcji plt.show(), okienko z wykresem się nie pojawiło.
To rozwiązanie wygląda obiecująco: https://stackoverflow.com/a/71390198.
Jeżeli nie zadziała, zawsze zamiast pokazywania wykresu w okienku, można zapisać go do pliku funkcją fig.savefig("nazwa_pliku.format").
Matplotlib umie zapisywać rysunki w wielu formatach, na przykład .png, .jpg, .pdf.
Zadania
- tydzień, Podstawy Pythona, 24.02.2026
Zadania seria 1. Podsumowanie pierwszych zajęć. Rozwiązania
- tydzień, Listy i krotki, 03.03.2026
Zadania seria 2. Podsumowanie drugich zajęć. Rozwiązania
- tydzień, Słowniki i zbiory, 10.03.2026
Zadania seria 3. Podsumowanie trzecich zajęć. Rozwiązania
Materiały do zadań: ludnosc.json, D-42.json.
- tydzień, Łańcuchy tekstowe (Stringi), 17.03.2026
Zadania seria 4. Podsumowanie czwartych zajęć. Rozwiązania
Dokumentacja metod łańcuchów tekstowych w Pythonie.
- tydzień, Pliki, 24.03.2026
Zadania seria 5 autorstwa Bartłomieja Zglinickiego. Podsumowanie piątych zajęć. Rozwiązania
- tydzień, 31.03.2026
Z powodu wakacji wiosennych nie było wykładu, więc nadrabiamy zaległe zadania.
Podsumowanie szóstych zajęć (enumerate + regex).
- tydzień, Klasy (podstawy), 14.04.2026
Zadania seria 6. Podsumowanie siódmych zajęć. Rozwiązania
- tydzień, Klasy (metody specjalne/magiczne), 21.04.2026
Zadania seria 7. Podsumowanie ósmych zajęć. Rozwiązania
Konsultacje 25.04.2026 Materiały z konsultacji.
- tydzień, Klasy (dziedziczenie), 28.04.2026
Zadania seria 8. Podsumowanie dziewiątych zajęć. Rozwiązania
- tydzień, Biblioteka
numpy, 12.05.2026
Zadania seria 9. Rozwiązania
- tydzień, Równania różniczkowe zwyczajne (ODE), 19.05.2026
Zadania seria 10. Rozwiązania
Animacja oscylatora Duffinga.
- tydzień, Analiza danych pomiarowych (biblioteki
scipy i pandas), 26.05.2026
Zadania seria 11. Rozwiązania
Materiały do zadań: dane_seria11.zip.
- tydzień, Całkowanie numeryczne (kwadratury), 2.06.2026
Zadania seria 12. Rozwiązania
- tydzień, Programowanie współbieżne (wielowątkowe i wieloprocesowe), 9.06.2026
Zadania seria 13. Rozwiązania
Konsultacje 13.06.2026 Materiały z konsultacji.
Przydasie
Przydatne standardowe biblioteki Pythona
Te biblioteki są zainstalowane razem z Pythonem i można od razu je importować.
- math, cmath - funkcje i stałe matematyczne (w tym zespolone).
- random - liczby pseudolosowe i losowanie elementu z kontenera.
- os - komunikacja z systemem operacyjnym, jak znajdowanie plików.
- sys - zmienne systemowe/środowiskowe związane z naszym programem.
- time - mierzenie upływu czasu.
- datetime - obsługa dat kalendarzowych i godzin zegarowych.
- re - wyrażenia regularne (regex).
- json - zapisywanie/wczytywanie obiektów pythonowych do/z plików tekstowych JSON.
- argparse - bardziej zaawansowana biblioteka do obsługi argumentów programu, niż lista
sys.argv.
- fractions - liczby wymierne, bez ograniczonej precyzji
floatów, ale wolniejsze w użyciu.
- itertools - zaawansowane metody do iterowania i robienia pętli, na przykład iloczyn kartezjański list, permutacje elementów listy itp.
- collections - bardziej specjalistyczne kontenery, niż wbudowane listy, krotki, słowniki i zbiory.
- threading - programowanie wielowątkowe.
- multiprocessing - programowanie wieloprocesowe.
- queue - kolejki zadań dla wątków (i nie tylko).
- subprocess - uruchamianie innych programów (w szczególności wykonywanie poleceń terminalem).
- urllib - zestaw narzędzi do ładowania i analizowania stron internetowych (jako kodu HTML).
- tkinter - tworzenie interfejsów graficznych.
- zlib, gzip, lzma, zipfile, tarfile,... - (de)kompresja plików.
Podstawowe biblioteki zewnętrzne
Te biblioteki są powinny być dostępne na komputerach wydziałowych.
- numpy - biblioteka do obliczeń na N-wymiarowych tablicach liczb.
- matplotlib - biblioteka do tworzenia wykresów najróżniejszego typu, w tym interaktywnych. Ściągi.
- scipy - zestaw narzędzi przydatnych w obliczeniach naukowych, jak dopasowywanie krzywych, funkcje specjalne, statystyka itp.
- sympy - biblioteka do przekształceń symbolicznych, ala Wolfram Mathematica czy Maple. Interpreter sympy online.
- pandas - biblioteka do obsługi arkuszy kalkulacyjnych, jak pliki
.csv, .xlsx.
Biblioteki specjalistyczne
Te biblioteki wymagają samodzielnego zainstalowania i mogą być trudniejsze w użyciu. Raczej nie będą wymagane na ćwiczeniach, ale mogą przydać się w przyszłości.
- odrpack - biblioteka do dopasowywania krzywych do punktów dająca więcej możliwości, niż
curve_fit z scipy. Pozwala w szczególności na uwzględnienie niepewności x-ów. Trochę trudniejsza w użyciu.
- numba - biblioteka do kompilowania JIT, pozwalająca przyspieszyć niektóre obliczenia w pythonie.
- jax - biblioteka do kompilowania JIT, z własną implementacją biblioteki
numpy. Trudniejsza w użyciu niż numba, ale czasem daje lepsze rezultaty.
- diffrax - oparta na
jax biblioteka do szybkiego numerycznego rozwiązywania równań różniczkowych najróżniejszych rodzajów.
- PyQtGraph - biblioteka do tworzenia interaktywnych wykresów. Działa dużo płynniej, niż interaktywne wykresy w
matplotlib, ale jest trudniejsza w użyciu. Wymaga zainstalowania Qt.
- Pillow - biblioteka do obróbki obrazu.
- OpenCV - biblioteka do analizowania obrazu, w tym na żywo.
- Python-tesseract - biblioteka do odczytywania napisów z obrazu (OCR).
- Beautiful Soup - bardzo popularna biblioteka do analizowania kodu HTML i XML.
- TensorFlow - biblioteka do uczenia maszynowego.
- PyTorch - inna biblioteka do uczenia maszynowego.
- tqdm - biblioteka z łatwymi w użyciu paskami postępu. Pokazują szacowany czas wykonania, szybkość itp.