Znajomość podstawowych konstrukcji programistycznych (ze wstępu do programowania).
Matematyka z zakresu szkoły średniej/z przedmiotu repozytorium matematyki elementarnej.
Ewentualne braki należy opanować w samodzielnym zakresie.
W razie problemów zapraszam na konsultacje.
Wstęp do języka Python
Język Python
Poprawna wymowa: pajton.
Język Python stworzył we wczesnych latach 90. Guido van Rossum – jako następcę języka ABC.
Nazwa języka pochodzi od serialu komediowego emitowanego w latach siedemdziesiątych przez BBC – „Monty Python’s Flying Circus” (Latający cyrk Monty Pythona). Projektant, będąc fanem serialu i poszukując nazwy krótkiej, unikalnej i nieco tajemniczej, uznał tę za świetną.
Przełomowy rok - 2008
Utworzenie drugiej gałęzi rozwoju 3.x. Początkowe obie gałęzie były rozwijane niezależnie, lecz wsparcie Pythona 2.x zostało zakończone w roku 2020.
każdy poziom wcięcia powinien składać się z 4 spacji
wiersz powinien składać się z maksymalnie 79 znaków
Puste linie:
dwie linie między funkcjami najwyższego poziomu i między klasami.
pojedyncza linia między funkcjami w klasie
Kodowanie:
dla Pythona 3 sugerowane i domyślne to UTF-8.
Stringi:
można używać pojedynczych apostrofów jak i podwójnych cudzysłowów
ważne, aby stosować wybraną notację konsekwentnie
jedyny wyjątek to gdy wewnątrz stringu chcemy użyć cudzysłów np.
print('Oglądam film "Player One"')
Jak sprawdzać styl PEP8?
Pycharm - Code - Inspect Code
moduł flake8
Różnice - Editor/Code Style/Python
Cechy języka Python
Python wspiera różne paradygmaty programowania: obiektowy, imperatywny oraz funkcyjny.
Posiada w pełni dynamiczny system typów i automatyczne zarządzanie pamięcią (garbage collector).
Często używany jako język skryptowy. Interpretery Pythona są dostępne na wiele systemów operacyjnych. Różne implementacje Pythona: CPython (język C), IronPython (platforma .NET), Jython (Java), PyPy (Python).
Prosta i czytelna składnia ułatwiająca utrzymywanie, używanie i rozumienie kodu.
Zen
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
...
a =5if a >0:print("Liczba dodatnia")elif a ==0:print("Zero")else:print("Liczna ujemna")
Liczba dodatnia
Zagnieżdżone instrukcje warunkowe:
if<expr>:<statement(s)>if<expr>:<statement(s)>
i =21if i >0:print("liczba jest dodatnia")if i %2==0:print("Liczba jest dodatkowo parzysta")
liczba jest dodatnia
for - pętla
for i in<collection>:<loop body>
Przykład:
for i inrange(5):print(i)
0
1
2
3
4
range
Generuje nam ciąg liczb (dedykowany typ range). Trzeba zamienić na listę “by podejrzeć”.
Uwaga: wszystkie argumenty muszą być w typie całkowitym.
Jeden argument - to “koniec” - ciąg tworzą liczby naturalne od \(0\) do \(n-1\). Krok domyślny to 1.
Dwa argumenty - to “początek” i “koniec”. Krok domyślny to 1. Wtedy wyświetlone są liczby całkowite z przedziału lewostronnie domkniętego \([początek, koniec)\).
Trzy argumenty - to “początek”, “koniec” oraz krok.
Co oznacza w Pythonie, że wartości przekazywane są przez referencję?
a =5b = ab +=2print(a)print(b)
5
7
Listy
Lista w Pythonie to tzw. typ sekwencyjny umożliwia przechowywanie elementów różnych typów.
Cechy:
zmienny (mutable) - umożliwia przypisanie wartości pojedynczym elementom
do zapisu używamy nawiasów kwadratowych
poszczególne elementy rozdzielamy przecinkami
każdy element listy ma przyporządkowany indeks
elementy listy są numerowane od zera
listy są uporządkowane
listy są dynamiczne (mogą mieć różną długość)
listy mogą być zagnieżdżone
Uwaga!
Listy w języku Python są specyficzną strukturą danych nie zawsze dostępną w innych językach programowania. Pojęcie listy w całej informatyce “szersze”. Wyróżnia się np. listy jednokierunkowe, które nie muszą mieć indeksu. Nie będziemy takich przypadków analizować.
nazwa = [element1, element2, ..., elementN]
Pusta lista:
a = []b =list()
Lista z liczbami:
a = [2, 3, 4.5, 5, -3.2]
Lista mieszana:
b = ['abcd', 25+3j, True, 1]
Kolejność ma znaczenie
a = [1, 2, 3, 4]b = [4, 3, 2, 1]print(a == b)
False
Elementy na liście nie muszą być unikalne
a = [1, 2, 3, 4, 2]b = [1, 2, 3, 4]print(a)print(a == b)
[1, 2, 3, 4, 2]
False
Indeks - dostęp do elementów listy (od zera)
a = [1, 3, 'abc', False, -2.3, 'XYZ', 9.3]print(a[1])print(a[4])print(a[0])#print(a[7])
3
-2.3
1
a = [1, 3, 'abc', False, -2.3, 'XYZ', 9.3]print(a[-1])print(a[-5])print(a[-7])
9.3
abc
1
a = [1, 3, 'abc', False, -2.3, 'XYZ', 9.3]print(a[1:4])print(a[-5:-2])print(a[:4])
list.clear() - usuwa wszystkie elementy z listy. Równoważnie: del a[:]
a = [1, 3, 'abc', False]a.clear()print(a)
[]
list.index(x) - zwraca indeks elementu x (o ile istnieje, inaczej błąd), w przypadku duplikatów pierwszy z lewej list.index(x,start) - zwraca indeks elementu x (o ile istnieje, inaczej błąd) zaczynając od pozycji start, w przypadku duplikatów pierwszy z lewej list.index(x,start,end) - zwraca indeks elementu x (o ile istnieje, inaczej błąd) zaczynając od pozycji start a kończąc na end-1, w przypadku duplikatów pierwszy z lewej