Professional Documents
Culture Documents
Wprowadzenie do Pythona
Marek Retinger
2 pa¹dziernika 2022
Spis tre±ci
1 Wprowadzenie 2
2 Podstawy Python'a 2
2.1 Instalacja ±rodowiska . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Wprowadzenie do narz¦dzia programistycznego PyCharm . . . . 4
2.3 Zmienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Staªe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 Operacje na liczbach . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.6 Operacje na ci¡gach znakowych . . . . . . . . . . . . . . . . . . . 9
2.7 Obsªuga wej±cia/wyj±cia . . . . . . . . . . . . . . . . . . . . . . . 10
2.8 Skrypty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.9 Komentarze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.10 Podstawowe struktury danych . . . . . . . . . . . . . . . . . . . . 11
3 Instrukcje steruj¡ce 13
3.1 Instrukcja warunkowa if . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 P¦tla while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 P¦tla for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Funkcje 15
5 Obsªuga plików 16
5.1 Odczyt danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2 Zapis danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3 Format CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.4 Format JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6 Biblioteki 19
6.1 NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3 Enum - typ wyliczeniowy . . . . . . . . . . . . . . . . . . . . . . 22
7 Klasy 23
7.1 Metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8 Zadania 24
1
1 Wprowadzenie
2 Podstawy Python'a
1 https://winpython.github.io/
2
Ilustracja 2: Okno instalatora interpretera j¦zyka Python (II)
Werykacja poprawno±ci instalacji mo»e odby¢ si¦ przy u»yciu wiersza po-
lece« systemu Windows. Aby go uruchomi¢, nale»y u»y¢ skrótu klawiszowego
Logo Windows + R i w nowo otwartym okienku wpisa¢ cmd, po czym klikn¡¢
przycisk OK (rys. 3).
3
2.2 Wprowadzenie do narz¦dzia programistycznego Py-
Charm
2 https://jetbrains.com
4
Ilustracja 7: PyCharm udost¦pnianie danych statystycznych
5
Ilustracja 9: PyCharm ekran startowy
wym (9) klikn¡¢ nale»y New Project . Pojawi si¦ wówczas widok, w którym
to b¦dzie mo»na skongurowa¢ ustawienia nowego projektu. Nale»y to zrobi¢
zgodnie z tym, co zostaªo przedstawione na rysunku 12. Jedyna ró»nica po-
winna dotyczy¢ pola Location. Po u»yciu przycisku Create , nast¡pi przej±cie
do gªównego okna programu (rys. 13). Okno to zostaªo podzielone na kilka cz¦-
±ci. Najwa»niejsze z punktu widzenia zaj¦¢ b¦d¡:
6
Ilustracja 11: PyCharm doª¡czanie interpretera (II)
7
Ilustracja 13: PyCharm tworzenie nowego projektu (II)
2.3 Zmienne
a = 10
b = ' Tekst '
nazwy mog¡ zawiera¢ tylko litery (A-z), cyfry (0-9) oraz znak podªogi,
2.4 Staªe
PI = 3.14159265359
MOUNT_EVEREST = 8849
Zasady tworzenia nazw dla staªych s¡ identyczne jak w przypadku zmiennych.
8
2.5 Operacje na liczbach
Operator Dziaªanie
+ Dodawanie
- Odejmowanie
* Mno»enie
/ Dzielenie
% Reszta z dzielenia
// Dzielenie caªkowite
** Pot¦gowanie
d = 77
e = 10
f = 0.10001
9
h = g + ' numer ' + str ( e )
Mo»liwe jest tak»e odwoªanie si¦ do pojedynczego znaku przy u»yciu opera-
tora [ ]. Nale»y pami¦ta¢, »e ci¡g znaków jest numerowany od 0.
2.8 Skrypty
Uwaga: Usu« zawarto±¢ pliku main.py. Nie b¦dzie ona przydatna na tych
i kolejnych zaj¦ciach.
10
w narz¦dzie PyCharm. Klikaj¡c pomi¦dzy numerem linii a obszarem roboczym,
u»ytkownik mo»e doda¢ punkt zatrzymania (tzn. break point ). Gdy interpreter
dotrze do wykonywania danej linii kodu, zostanie on zatrzymany, a na ekranie
pojawi¡ si¦ dodatkowe informacje diagnostyczne. Aby uruchomi¢ tryb debuggo-
wania, mo»na u»y¢ skrótu klawiszowego SHIFT+F9. Tryb ten b¦dziemy u»ywa¢
na zaj¦ciach tylko okazjonalnie.
2.9 Komentarze
"""
Kod opracowa ª :
Jan Kowalski
100100
"""
xyz = 5
W ramach pojedynczego skryptu mo»na u»ywa¢ obu typów komentarzy.
11
l = [ 'A ' , 'B ' , 'C ']
l [2] = 'X '
l . append ( 'D ')
l . remove ( 'A ')
print ( l [0])
print ( len ( l ))
Krotki, podobnie jak listy, sªu»¡ do przechowywania zbioru pojedynczych
warto±ci. Podstawow¡ ró»nic¡ jest fakt, »e ich zawarto±¢ nie mo»e zosta¢ zmie-
niona po ich utworzeniu. W praktyce oznacza to, »e niemo»liwe jest u»ycie ope-
ratora przypisania (poskutkuje bª¦dem). Dost¦p do pojedynczego elementu uzy-
skuje si¦ za po±rednictwem nawiasów kwadratowych. Elementy s¡ numerowane
od 0. Mo»liwe jest pobranie warto±ci wskazuj¡cej na dªugo±¢ krotki, za po±red-
nictwem funkcji len().
t = ( 'A ' , 'B ' , 'C ')
print ( t [0])
print ( len ( t ))
Zbiory stanowi¡ kolekcje, sªu»¡ce do przechowywania unikalnych warto±ci.
Warto±ci te nie posiadaj¡ zdeniowanej kolejno±ci wyst¡pienia, a tym samym
nie ma mo»liwo±ci pobrania konkretnej warto±ci. Co wi¦cej, kilkukrotne wypisa-
nie zawarto±ci zbioru, mo»e skutkowa¢ inn¡ kolejno±ci¡ elementów przy ka»dym
wywoªaniu. Dodawanie oraz usuwanie elementów odbywa si¦ przy pomocy me-
tod add() oraz remove(). Rozmiar zbioru mo»na pobra¢ przy u»yciu funkcji
len().
s = { 'A ' , 'B ' , 'C '}
s . add ( 'D ')
s . remove ( 'A ')
print ( s )
print ( len ( s ))
Dost¦p do elementów zbioru odbywa si¦ za po±rednictwem p¦tli for.
for i in s :
print ( i )
Ostatni¡ struktur¡ s¡ sªowniki. Podobnie jak zbiory, sªu»¡ one do przechowy-
wania unikalnych elementów, przy czym s¡ to pary postaci klucz:warto±¢, gdzie
tylko klucz musi by¢ unikalny w ramach danego sªownika. Dost¦p odbywa si¦
za po±rednictwem klucza podanego w nawiasach kwadratowych. Mo»liwe jest
dodawanie i usuwanie elementów oraz zmiana ich warto±ci.
d = { ' el_A ': 'A ', ' el_B ': 'B ' , ' el_C ': 'C '}
d [ ' el_D '] = 'D '
del d[ ' el_A ']
print ( d )
print ( d [ ' el_B ' ])
print ( len ( d ))
12
3 Instrukcje steruj¡ce
Operator Dziaªanie
== Równy
!= Nierówny
> Wi¦kszy
< Mniejszy
>= Wi¦kszy lub równy
<= Mniejszy lub równy
Operator Dziaªanie
and Iloczyn logiczny
or Suma logiczna
not Negacja
Instrukcja warunkowa mo»e by¢ bez alternatywy i skªada¢ si¦ tylko ze sªowa
kluczowego if. Nale»y pami¦ta¢, »e gª¦boko±¢ wci¦cia tekstu wskazuje przyna-
le»no±¢ danego wyra»enia lub bloku tekstu do danej klauzuli (biaªe znaki maj¡
tu znaczenie). Instrukcja if opcjonalnie mo»e zawiera¢ alternatyw¦, deniiwan¡
przy u»yciu sªowa elif oraz else. Poni»szy przykªad ilustruje zasad¦ dziaªania
instrukcji warunkowej dla przypadku dzielenia przez 0.
# poprawny kod
a = 5
b = 0
if b == 0:
print ( ' Blad dzielenia przez 0! ')
else :
c = a / b
print ( c )
# niepoprawny kod
a = 5
b = 0
if b == 0:
print ( ' Blad dzielenia przez 0! ')
else :
13
c = a / b
print ( c )
Uwaga: Aby p¦tla zostaªa zako«czona, warunek musi sta¢ si¦ logicznym faª-
szem lub musi zosta¢ u»yte sªowo kluczowe break. W przeciwnym wypadku,
ciaªo p¦tli b¦dzie wykonywane w niesko«czono±¢ (do momentu siªowego wy-
muszenia zako«czenia dziaªania programu)!
14
range(a, b) warto±ci z przedziaªu <a; b) z krokiem 1.
sum = 0
for el in range (1 , 101) :
if el % 2 == 0:
sum = sum + el
print ( sum )
4 Funkcje
3 Gdy u»yte s¡ tylko zmienne lokalne, a wyj±cie nie jest zwracane za po±rednictwem argu-
mentu wej±ciowego.
15
wartosc_a = 5
wartosc_b = 8
wynik_a = wartosc_a + wartosc_b * wartosc_a
wartosc_a = 7
wartosc_b = 9
wynik_b = wartosc_a + wartosc_b * wartosc_a
def funkcja (a , b ) :
return a + b * a
wynik_a = funkcja (5 , 8)
wynik_b = funkcja (7 , 9)
5 Obsªuga plików
r odczyt
w zapis
a dopisywanie
x tworzenie (bª¡d, gdy istnieje)
16
Zadanie: Wczytaj zawarto±¢ pliku tekst.txt. Nast¦pnie pobierz od u»yt-
kownika pojedynczy, dowolny znak (lt), policz liczb¦ wyst¡pie« znaku lt we
wczytanym tek±cie i wy±wietl wynik.
a = 5
b = 6
c = a / b
Zadanie: Napisz program, który wczyta plik asc.txt, rozdzieli jego zawar-
AT X. Wy-
to±¢ do pi¦ciu kolumn i przeksztaªci do postaci tabeli w j¦zyku L E
nik powinien zosta¢ zapisany w pliku z rozszerzeniem *.tex.
Format CSV (ang. Comma Separated Value ) deniuje struktur¦ pliku, jako zbiór
warto±ci oddzielonych przecinkami. Python posiada wbudowany moduª, pozwa-
laj¡cy na prac¦ z takimi plikami w sposób relatywnie prosty. Aby z niego sko-
rzysta¢ nale»y umie±ci¢ poni»szy kod na pocz¡tku skryptu.
import csv
Odczyt danych mo»na zrealizowa¢ w sposób analogiczny do uprzednio omó-
wionych operacji na plikach. Zamiast metody read(), korzystamy tutaj z me-
tody reader() obiektu csv. Jako argumenty przyjmuje ona uchwyt do pliku
oraz pojedynczy znak, który b¦dzie wskazywaª na separator danych.
17
import csv
for d in r :
print ( d )
p . close ()
import csv
p = open ( ' liczby_2 . txt ' , 'w ' , newline = ' ')
r = csv . writer (p , delimiter = ' - ')
p . close ()
Innym, popularnym formatem danych, jest JSON (ang. JavaScript Object Nota-
tion ). Powstaª on jako alternatywa dla formatu XML (ang. Extensible Markup
Language ). Jego struktura przypomina struktur¦ sªownika w j¦zyku Python.
Aby skorzysta¢ z wbudowanej biblioteki, nale»y doª¡czy¢ moduª json.
import json
Zbiór funkcji realizuj¡cych odczyt danych, niewiele ró»ni si¦ od tego, dla
formatu CSV. Ró»nica polega gªównie na u»yciu metody load() obiektu json.
Odwoªanie do dowolnej warto±ci, odbywa si¦ za po±rednictwem wskazania na
nazw¦ klucza.
import json
print ( r )
print ( r [ " el_A " ])
18
json_p . close ()
import json
dt = { ' liczba_A ': 2341 , ' liczba_B ': 4451 , ' liczba_C ': 734}
6 Biblioteki
6.1 NumPy
Macierze
19
Tabela 5: Funkcje deniuj¡ce macierze
Nazwa Opis
zeros([w,k]) Macierz zer
ones([w,k]) Macierz jedynek
full([w,k],c) Macierz warto±ci c
eye(r) Macierz jednostkowa
random.random([w,k]) Macierz losowych warto±ci z przedziaªu ⟨0, 1⟩
Nazwa Opis
- Odejmowanie
+ Dodawanie
* Mno»enie (elementów macierzy)
@ Mno»enie macierzy
/ Dzielenie
**c Pot¦gowanie przez skalar (c)
20
print ( np_a @ np_g )
print ( np_d **5)
Na macierzach mo»na tak»e wykonywa¢ operacje logiczne. Ich zbiór jest
zgodny z tymi, przedstawionymi w tabeli 3. W przypadku wykonania operacji
porównania, utworzona zostanie macierz o wymiarach macierzy bazowej, wy-
peªniona warto±ciami logicznymi (True lub False). Wynik operacji jest zale»ny
od speªnienia zadanego warunku mi¦dzy elementami o tych samych indeksach
w macierzach.
6.2 Matplotlib
import numpy as np
import matplotlib . pyplot as plot
x = np . arange (1 , 100 , 2)
y = x * x
z = y * ( x /2.0) + 10
plot . figure ()
plot . plot (x , y , x , z )
plot . xlabel ( 'O ± x ')
plot . ylabel ( 'y ')
plot . legend ([ " Seria A " , " Seria B " ])
plot . show ()
Po zdeniowaniu wej±cia, mo»na wygenerowa¢ wykres. Sªu»¡ do tego kolejno
metody figure() oraz show(). Pierwsza odpowiada za utworzenie nowego wy-
kresu, druga za jego wy±wietlenie. Pozostaªe metody odpowiadaj¡ wprost tym,
21
znanym z MATLABa/Octave i oznaczaj¡ odpowiednio narysowanie wykresu,
nadanie etykiety dla osi X, nadanie etykiety dla osi Y, dodanie legendy do wy-
kresu.
Kompletna moduªu plot biblioteki Matplotlib znajduje
dokumentacja
https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.
si¦ pod adresem
pyplot.plot.html.
Zadanie: Zapoznaj si¦ z dokumentacj¡ moduªu plot. Zmie« styl linii, ich
kolor oraz znaczniki dla przykªadowego wykresu.
22
Zmienn¡ wybrana_zabawka mo»na u»y¢ m.in. w instrukcjach warunkowych.
Mo»na tak»e bezpo±rednio pobra¢ jej warto±¢ oraz nazw¦ (jak w przypadku
sªownika klucz i warto±¢). Sªu»¡ do tego odpowiednio metody name oraz value.
if wybrana_zabawka == Zabawka . PILKA :
print ( ' Wybrano : ' + wybrana_zabawka . name + '! ( indeks : ' +
str ( wybrana_zabawka . value ) + ') ')
7 Klasy
Klasa stanowi typ danych, agreguj¡cy zbiór metod oraz struktur danych. Sta-
nowi ona podstawowy element programowania obiektowego, a tym samym re-
alizuje jego podstawowe paradygmaty:
Struktura klasy skªada si¦ ze sªowa kluczowego class oraz nazwy wªasnej
(opcjonalnie nazwy klasy, po której odbywa si¦ dziedziczenie). Na zaj¦ciach za-
prezentowana zostanie mo»liwie jak najprostsza forma deniowania oraz u»ycia
klas, dlatego dziedziczenie nie zostanie tutaj omówione.
Zdeniujmy teraz klas¦ Pudelko, która b¦dzie zawieraªa w sobie pust¡ list¦.
class Pudelko :
przedmioty = []
Takie utworzenie klasy mo»e niekiedy prowadzi¢ do problemów z alokacj¡ pa-
mi¦ci lub te» by¢ po prostu niepo»¡dane. Aby poprawnie nada¢ warto±ci pocz¡t-
kowe, nale»y posªu»y¢ si¦ konstruktorem. Konstruktor to metoda, która jest
wywoªywana w momencie tworzenia obiektu, czyli instancji klasy. W naszym
przypadku przyjmie on nast¦puj¡c¡ posta¢:
instancja_pudelko = Pudelko ()
Kompletny kod zostaª zamieszczony poni»ej.
23
class Pudelko :
przedmioty = []
instancja_pudelko = Pudelko ()
7.1 Metody
8 Zadania
24
wyniki list¦ przechowuj¡c¡ wyniki wszystkich wykonanych dotych-
czas operacji.
25