Python Podrecznik
Python Podrecznik
CYFROWA
GADZINA
Podstawy programowania w języku Python
--version: 1.0.4
CYFROWA GADZINA
Podstawy programowania w języku Python
Cyfrowa gadzina
https://www.pikademia.pl/
Kursy, ebooki, szkolenia, tutoriale
1
Spis zagadnień
Spis zagadnień 2
Wprowadzenie 5
Typy danych 7
Wyświetlanie informacji - print() 8
Zmienne 9
Konkatenacja 12
Inkrementacja i dekrementacja 14
Operacje na wartościach tekstowych 15
Indeksowanie / zakresy 15
Wieloliniowe wartości tekstowe 17
Escape characters 17
Surowe łańcuchy 17
Wprowadzanie informacji do programu 18
Przykład: Obliczanie potęgi podanej liczby 19
Przykład: Obwód i pole powierzchni kwadratu 20
Losowa liczba 21
Losowe liczby od 0 do 1 21
Losowe liczby całkowite w zakresie 22
Aliasy 23
Instrukcja warunkowa 24
Instrukcja warunkowa 24
Operator tenarny 26
Indentacja 26
Operatory porównania 27
Operatory logiczne 28
Przykład: Suma kątów wewnętrznych w wieloboku 29
Sprawdzenie wystąpienia tekstu 30
Przykład: Działanie matematyczne 31
2
Funkcje 32
Funkcja 32
Funkcja z parametrem 34
Funkcja z parametrem domyślnym 35
Funkcja z return 36
Zmienne globalne i lokalne 38
Pętle 39
Pętla for 39
Pętla while 41
Przykład: Podanie hasła do skutku 42
Pętla while i for 43
Break, continue 44
Przykład: Losowe działanie matematyczne 45
Przykład: Zadanie matematyczne z odpowiedzią 46
Przykład: Wizualizacja gwiazdkowych kwadratów 47
Przykład: Gwiazdkowa choinka 47
Wyjątki try: except: 48
Przykład: Cena po obniżce 48
Przykład: Test matematyczny z punktami 49
Przykład: Gra - Zgadnij liczbę 50
Struktury danych 52
Listy 52
Listy z pętlą 53
Metody na listach 55
Przykład: Czy można zbudować trójkąt? 58
Przykład: Losowanie liczb totolotka 59
Zadanie: Różnica między min a max 60
Słownik (Dictionary) 61
Krotka (Tuple) 63
Set 64
Dodatkowe paczki z pip 66
3
Data i czas 68
Klasa 70
Tworzenie klasy i obiektu 70
Metody 72
Metody statyczne 73
Praca z plikami i danymi 74
Tworzenie / zapisywanie / usuwanie pliku 74
JSON 78
API requests 81
Funkcje matematyczne 83
Modulo 85
Przykład: Liczba podzielna przez 3 85
Metody wartości tekstowych 86
Tablica znaków ASCII / UNICODE 88
Przykład: Generowanie losowego hasła 90
Przykłady 91
Ciąg fibbonacciego 91
4
Wprowadzenie
5
Jak tworzyć kod?
6
Typy danych
Pamiętaj!
Części dziesiętne w liczbach ułamkowych oddzielamy za pomocą
kropki!
Wartości tekstowe umieszczane są wewnątrz apostrofu lub
cudzysłowu.
Liczby całkowite w pythonie mogą być tak duże, na ile pozwala
dostępna pamięć, oznacza to, niewyobrażalnie wielkie liczby.
7
Wyświetlanie informacji - print()
Przetwarzanie kodu
8
Zmienne
Tworzenie zmiennych
9
Język python jest case-sensitive, to znaczy, że rozróżnia małe i
wielkie litery alfabetu.
Zmienne: imie, Imie, IMIE to trzy zupełnie inne zmienne.
10
Zmiana typu
Sprawdzanie typu
11
Konkatenacja
Konkatenacja z operatorem + i ,
liczba_punktow = 10
12
Konkatenacja przez interpolację f
# przykład 1
uczen = "Marcel"
punkty = 99
print(f"Uczeń {uczen} zdobył {punkty} punktów z egzaminu.")
# przykład 2
print(f"2 + 4 = { 2 + 4 }")
13
Inkrementacja i dekrementacja
14
Operacje na wartościach tekstowych
Indeksowanie / zakresy
Przykład:
w wyrazie "python", znak 'h' ma numer indeksu równy 3.
15
Za pomocą dwukropka(:) ustalamy zakres.
Dzięki wartościom ujemnym możemy wybrać liczby zaczynając
od końca łańcucha znaków.
16
Wieloliniowe wartości tekstowe
Escape characters
Surowe łańcuchy
17
Wprowadzanie informacji do programu
18
Przykład: Obliczanie potęgi podanej liczby
19
Przykład: Obwód i pole powierzchni kwadratu
20
Losowa liczba
Losowe liczby od 0 do 1
21
Losowe liczby całkowite w zakresie
#losujemy liczbę od 1 do 10
losowa_liczba = random.randrange(1, 11, 1)
#wypisujemy liczbę
print("Wylosowana liczba: ",losowa_liczba)
22
Aliasy
23
Instrukcja warunkowa
Instrukcja warunkowa
24
Syntax pełnej instrukcji warunkowej:
import random
ocena = random.randrange(1,6)
if(ocena == 5):
print("Super, dałeś czadu!")
elif(ocena == 4):
print("Jest dobrze, brawo!")
else:
print("Może kawa?")
25
Operator tenarny
warunek_prawdziwy = False
zmienna = "prawda" if warunek_prawdziwy else "nie prawda"
print(zmienna)
Indentacja
warunek = True
if(warunek):
print("Instrukcje") # wewnętrzny blok kodu
else:
print("Instrukcje") # wewnętrzny blok kodu
26
Operatory porównania
== Równe
!= Nie jest równe
> Większy niż
< Mniej niż
>= Większy niż lub równy
<= Mniejszy niż lub równy
27
Operatory logiczne
Przykład 1.
Autem można jechać, gdy kierowca ma prawo jazdy i kluczyki.
Stosujemy operator and, ponieważ musimy mieć zarówno prawo
jazdy jak i kluczyki.
Przykład 2.
Możemy pojechać do sklepu autem lub rowerem.
Stosujemy operator or, ponieważ mamy alternatywę, możemy
jechać autem lub rowerem.
and
Stosując operator and oba warunki muszą być prawdziwe, aby
całe wyrażenie również było prawdziwe.
or
Stosując operator or wyrażenie będzie prawdziwy, gdy choć
jeden z warunków będzie prawdziwy
not
Stosując operator not całe wyrażenie logiczne zmienia wartość
(True zmienia się na False i odwrotnie)
28
Przykład: Suma kątów wewnętrznych w wieloboku
29
Sprawdzenie wystąpienia tekstu
slowo = "anko"
zdanie = "Siemanko gadziny"
30
Przykład: Działanie matematyczne
import random
l1 = random.randrange(1,11,1)
l2 = random.randrange(1,11,1)
suma = l1 + l2
tresc_zadania = f"{l1} + {l2} = "
odpowiedz = input(tresc_zadania)
if(int(odpowiedz) == suma):
print("Brawo")
else:
print("Błąd")
31
Funkcje
Funkcja
# definicja funkcji
def wyswietl_powitanie():
print("Hellowina")
# wywołanie funkcji
wyswietl_powitanie()
32
Patrząc na utworzoną funkcję, możecie powiedzieć,
że zwykłe wyświetlenie wyrazu "Hellowina" moglibyśmy uzyskać
poprzez jedną linię kodu, a nie 3!!! Zatem, po co, to wszystko?
O ile nasz program jest na tyle krótki i prosty, że tą wiadomość
wyświetlamy tylko raz lub 2 to rzeczywiście,
tworzenie osobnej funkcji nie ma sensu.
W bardziej rozbudowanych aplikacjach będziemy się ciągle
spotykać z sytuacjami, gdzie zajdzie potrzeba wykorzystywania
tych samych instrukcji z różnych miejsc w kodzie. Wtedy właśnie
funkcje okazują się niezbędne. Wyobraź sobie, że to powitanie
używasz w 10 różnych miejscach w kodzie, więc bez tworzenia
funkcji musiałbyś 10-krotnie wstawić linię kodu:
print("Hellowina"). Po tygodniu jednak stwierdzasz, że ten wyraz
nie pasuje, więc chcesz go zmienić na inny. Musisz to zrobić w 10
różnych miejscach. Myślisz, że łatwo zapamiętać te miejsca? I
don't think so :) Dzięki funkcji, zmieniasz ten wyraz tylko raz i
wszystkie miejsca w których ją wywołujesz dostosowują się
automatycznie. I o to właśnie chodzi :)
# definicja funkcji
def wyswietl_powitanie():
print("Hellowina")
# wywołanie funkcji
wyswietl_powitanie()
33
Funkcja z parametrem
def wyswietl_wiadomosc(trescWiadomosci):
print(trescWiadomosci)
wyswietl_wiadomosc("Hejka")
wyswietl_wiadomosc("Dzień dobry")
wyswietl_wiadomosc("Cześć")
34
Funkcja z parametrem domyślnym
wyswietl_wiadomosc()
wyswietl_wiadomosc("Marian")
wyswietl_wiadomosc("Ania", "Cześć")
35
Funkcja z return
import random
def rzuc_moneta():
losowa = random.randrange(0,2)
if(losowa == 1):
return "orzeł"
else:
return "reszka"
print(rzuc_moneta())
36
37
Zmienne globalne i lokalne
ilosc_punktow = 0
def zmien_liczbe_punktow():
global ilosc_punktow
ilosc_punktow = 10
zmien_liczbe_punktow()
print(ilosc_punktow)
38
Pętle
Pętla for
39
o 1 większą, czyli 2. Ponownie dzieje się to samo, sprawdzane jest
czy dwójka jest w zakresie i jeśli tak jest, to kod przechodzi do
bloku i drukuje dwójkę, itd..
Przy ostatnim cyklu i zwiększy się do 1001, ale nie będzie już w
zakresie (bo wartość maksymalna jest zawsze zwiększana o 1) i
wtedy warunek staje się fałszywy, w związku z tym, pętla
przestaje działać, a interpretator wychodzi z tego bloku kodu i
przechodzi do kolejnych instrukcji w programie.
W tym typie pętli wartość i zwiększa się automatycznie o 1, w
innych pętlach sami możemy decydować jak ta wartość ma się
zmieniać.
liczby = ""
for i in range(1, 11):
liczby += str(i) + ", "
print(liczby[:-2])
40
Pętla while
Pętli while możemy użyć wtedy, gdy nie wiemy, ile razy ta pętla
powinna się wykonać. Za jej pomocą, możemy wyświetlać
działanie lub komunikat, dopóki użytkownik nie wpisze
prawidłowej odpowiedzi.
Krótko mówiąc, używamy jej, by wykonywać ciągle jakąś
instrukcję, dopóki podany warunek nie będzie prawdziwy.
To jest jej główne zadanie, ale możemy za jej pomocą, robić to, co
robimy za pomocą pętli for :)
Pętla while wymaga, aby zmienna iteracyjna została
zadeklarowana przed blokiem pętli, a w bloku pętli będziemy tą
zmienną samodzielnie zwiększać lub zmniejszać.
i = 1
while (i < 101):
print(i)
i += 1
41
Przykład: Podanie hasła do skutku
42
Pętla while i for
i = 10
while(i>=1):
print(i)
i-=1
for i in range(10,0,-1):
print(i)
43
Break, continue
44
Przykład: Losowe działanie matematyczne
import random
def stworz_dzialanie():
liczba1 = random.randrange(1,20)
liczba2 = random.randrange(6,30)
return f"{liczba1} + {liczba2} = "
for i in range(1,11):
print(stworz_dzialanie())
45
Przykład: Zadanie matematyczne z odpowiedzią
import random
liczba1 = random.randrange(1,20,1)
liczba2 = random.randrange(1,20,1)
suma = liczba1 + liczba2
zadanie = f"{liczba1} + {liczba2} = "
odp = input(zadanie)
while(odp != str(suma)):
print("Odpowiedź niepoprawna, spróbuj ponownie")
odp = input(zadanie)
print("Brawo Ty")
46
Przykład: Wizualizacja gwiazdkowych kwadratów
q = 6
for i in range(0,q):
line = '* ' * q
print(line)
q = 10
for i in range(1,q+1):
digits = q - i
space = " " * digits
line = space + '* '*i
print(line)
47
Wyjątki try: except:
48
Przykład: Test matematyczny z punktami
import random
liczba_punktow = 0
ilosc_zadan = 2
def tworz_zadanie():
liczba1 = random.randrange(1,21)
liczba2 = random.randrange(1,21)
tresc_zadania = f"{liczba1} + {liczba2} = "
odpowiedz = input(tresc_zadania)
try:
odpowiedz = int(odpowiedz)
if(odpowiedz == liczba1 + liczba2):
global liczba_punktow
liczba_punktow += 1
except:
print("Wynik powinien być podany w postaci liczby")
49
Przykład: Gra - Zgadnij liczbę
50
Przykład: Gra - Zgadnij liczbę
import random
szukana_liczba = random.randrange(1,101)
odpowiedz = 0
ilosc_prob = 0
def podaj_odpowiedz():
global odpowiedz
if(odpowiedz == 0):
trescPytania = "Podaj liczbę od 1 do 100: "
elif(odpowiedz > szukana_liczba):
trescPytania = "Podaj mniejszą liczbę: "
else:
trescPytania = "Podaj większą liczbę: "
try:
odpowiedz = int(input(trescPytania))
except:
print("Podaj wartość numeryczną!")
global ilosc_prob
ilosc_prob += 1
while(odpowiedz != szukana_liczba):
podaj_odpowiedz()
51
Struktury danych
Listy
52
Listy z pętlą
53
Iterowanie po wielu listach jednocześnie
liczby = [1, 2, 3, 4]
potegi = [1, 4, 9, 16]
54
Metody na listach
import random
kolekcja = 24,45,67
listy
55
Sortowanie listy
56
Przypisanie elementów listy do zmiennych
Mapowanie
oceny = ['4','5','2','1','5','3']
oceny = list(map(int,oceny))
print(oceny)
57
Przykład: Czy można zbudować trójkąt?
def pobierz_boki_trojkata():
boki_trojkata = []
try:
for i in range(1,4):
bok = float(input(f"Bok nr {i}: "))
boki_trojkata.append(bok)
boki_trojkata.sort()
if(boki_trojkata[0] > 0):
sprawdz_czy_mozna_zbudowac_trojkat(boki_trojkata)
else:
print("Boki muszą być większe od 0")
except:
print("Podaj długości boków w postaci liczby")
def sprawdz_czy_mozna_zbudowac_trojkat(boki):
if(boki[2] < (boki[0] + boki[1])):
print("Można zbudować trójkąt o podanych bokach.")
print(f"Obwód trójkąta wynosi: {sum(boki)}")
else:
print("Nie można zbudować trójkąta")
pobierz_boki_trojkata()
58
Przykład: Losowanie liczb totolotka
zestaw_wszystkich_liczb = generuj_zestaw_liczb_mix(49)
wygrane_liczby = losuj_wygrane_liczby(zestaw_wszystkich_liczb,
6)
59
print(wygrane_liczby)
liczby = [8,2,-23,9,56,-29,44,3,-76,12,89,-65,57]
60
Słownik (Dictionary)
dane_osobowe = {
"imie" : "Ania",
"wiek" : 36
}
61
import random
dane_osobowe = {
"imie" : "Ania",
"wiek" : 36
}
print(random.choice(
list(dane_osobowe.keys()))
)
62
Krotka (Tuple)
tupelek = 3,22,21
print(tupelek[0])
print(tupelek[1])
print(zwroc_tuple()[2])
63
Set
64
Operacje na wielu zbiorach:
uczniowie = {"Ania", "Kasia", "Marek", "Zenek"}
kursanci = {"Zosia", "Kasia", "Marek"}
print(uczniowie - kursanci) #różnica zbiorów
print(uczniowie & kursanci) #część wspólna zbiorów
print(uczniowie | kursanci) #suma zbiorów
65
Dodatkowe paczki z pip
66
https://youtu.be/rcuxn6Xizbc
Aby zainstalować paczkę za pomocą managera pip należy
wpisać pip install nazwaPaczki, w tym przypadku pokażemy jak
zainstalować paczkę pyinstaller do zamiany skryptu .py na .exe
pip install pyinstaller
67
Data i czas
Tworzenie daty
W przypadku, gdy chcemy stworzyć datę, wywołujemy
konstruktor datetime() i podajemy parametry opisujące rok,
miesiąc i dzień, godzinę, minutę, itd.. .
Poniżej przykład stworzenia daty: 21 lipiec 2020, 18:55
import datetime
data_urodzenia = datetime.datetime(2020, 7, 21, 18, 55)
Formatowanie daty
Utworzony obiekt daty zawiera wiele informacji, które możemy
przefiltrować i sformatować za pomocą odpowiednich metod i
argumentów, których część znajduje się w tabeli poniżej, np:
print(aktualna_data_godzina.strftime("%x"))
print(data_urodzenia.strftime("%d %B %Y, %H:%M"))
68
Tabela formatów daty i czasu
69
Klasa
class Osoba:
def __init__(self, imie, wiek):
self.imie = imie
self.wiek = wiek
70
71
Metody
class Osoba:
def __init__(self, imie, wiek):
self.imie = imie
self.wiek = wiek
def wyswietl_dane_osobowe(self):
print(f"Imię:{self.imie}, wiek:{self.wiek}")
p1 = Osoba("Marian", 36)
p1.wyswietl_dane_osobowe()
72
Metody statyczne
def wyswietl_dane_osobowe(self):
print(f"Imię:{self.imie}, wiek:{self.wiek}")
@staticmethod
def wyswietl_ilosc_osob():
print("Liczba osob: ", Osoba.liczba_osob)
p1 = Osoba("Marian", 36)
p2 = Osoba("Anna", 32)
p3 = Osoba("Kasia", 22)
p1.wyswietl_dane_osobowe()
p2.wyswietl_dane_osobowe()
p3.wyswietl_dane_osobowe()
Osoba.wyswietl_ilosc_osob()
73
Praca z plikami i danymi
74
Przykład dodania treści na koniec pliku o nazwie demo.txt
f = open("demo.txt", "a")
f.write("Maasdian")
f.write("\n")
f.close()
import datetime
with open("demo.txt",'w',encoding = 'utf-8') as f:
d = datetime.datetime.now()
f.write(d.strftime("%d %m %Y, %H:%M:%S"))
75
Odczytywanie plików
76
# Wyświetlanie losowej linii z pliku tekstowego
import os
import random
if os.path.exists("demo.txt"):
with open ("demo.txt", "r") as f:
lista = []
for line in f:
lista.append(line)
losowa = random.randrange(0, len(lista))
print(lista[losowa])
77
JSON
import json
78
Formatowanie obiektów na JSON
import json
class Osoba:
def __init__(self, imie, wiek):
self.imie = imie
self.wiek = wiek
p1 = Osoba("Marian", 36)
79
Przykład programu zapisującego high score do pliku json
import json
import random
def play_game():
hscore = load_scores()
print(f'Highest score: {hscore[1]} by {hscore[0]}')
player = []
player.append(input("Your name: "))
player.append(random.randrange(100000))
def save_scores(player):
json_string = json.dumps(player)
with open ("players.json", "w") as json_file:
json_file.write(json_string)
def load_scores():
with open ("players.json", "r") as json_file:
file_text = json_file.read()
try:
data = json.loads(file_text)
return data
except:
return ["...", 0]
play_game()
80
API requests
import requests
import json
def get_json_data():
parameters = "per_page=3"
response =
requests.get("https://pikademia.pl/wp-json/wp/v2/posts",par
ameters)
articles = response.json()
# content = response.content
# articles = json.loads(content)
for article in articles:
print(article["title"]["rendered"])
get_json_data()
81
Zapytania (requesty) zawsze zwracają informacje odnośnie
połączenia.
Możemy je pobrać za pomocą klucza status_code:
print(response.status_code)
82
Funkcje matematyczne
# Wartość bezwzględna
x = abs(-7.25)
import math
#sinus wartości kątowej podanej w radianach
sin = round(math.sin(math.pi / 6), 4)
# Wartość liczby pi
import math
x = math.pi
83
# Potęga / pierwiastek
import math
x = pow(4, 3) # 4 do potęgi 3
y = math.sqrt(64)
z = pow(8, 2/3) # pierwiastek 3 stopnia z 8 do potęgi 2
w = pow (16, 1/4) # pierwiastek 4 stopnia z 16
84
Modulo
85
Metody wartości tekstowych
86
Metoda split()
tekst = "12-05-2022;22-05-2022;18-06-2022"
rok = tekst.split(';')
for i in range(0,len(rok),1):
rok[i] = rok[i][-4:]
print(rok)
87
Tablica znaków ASCII / UNICODE
88
Dec Char Dec Char Dec Char Dec Char
32 [space] 58 : 84 T 110 n
33 ! 59 ; 85 U 111 o
34 " 60 < 86 V 112 p
35 # 61 [=] 87 W 113 q
36 $ 62 > 88 X 114 r
37 % 63 ? 89 Y 115 s
38 & 64 @ 90 Z 116 t
39 ' 65 A 91 [ 117 u
40 ( 66 B 92 \ 118 v
41 ) 67 C 93 ] 119 w
42 * 68 D 94 ^ 120 x
43 =+ 69 E 95 _ 121 y
44 , 70 F 96 ` 122 z
45 - 71 G 97 a 123 {
46 . 72 H 98 b 124 |
47 / 73 I 99 c 125 }
48 0 74 J 100 d 126 ~
49 1 75 K 101 e 127
50 2 76 L 102 f
51 3 77 M 103 g
52 4 78 N 104 h
53 5 79 O 105 i
54 6 80 P 106 j
55 7 81 Q 107 k
56 8 82 R 108 l
57 9 83 S 109 m
https://unicode-table.com/en/
89
Przykład: Generowanie losowego hasła
import random
def generuj_haslo():
haslo = ""
for i in range(0,10):
losowy_znak = chr(random.randrange(48,123,1))
haslo += losowy_znak
return haslo
print(generuj_haslo())
90
Przykłady
Ciąg fibbonacciego
def get_fibbonacci_list(n):
result = [1, 1]
for i in range(n-2):
result.append(result[i] + result[(i + 1)])
return result
91