-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
341 lines (332 loc) · 21.6 KB
/
index.html
File metadata and controls
341 lines (332 loc) · 21.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Python - podstawy</title>
<link rel="icon" href="https://becomeapro.pl/wp-content/uploads/2017/07/python_logo.png">
<style>
html {
scroll-behavior: smooth;
}
body,html {
font-size:18px;
height: 100%;
background-color: lightblue;
}
code {
color: rgb(50, 50, 50);
background-color: rgb(235, 235, 235);
}
#navbar {
position: fixed;
float: left;
height: 100%;
width: 8%;
background-color: rgb(235, 235, 235);
left: 0px;
top: 0px;
border: 1px black solid;
}
#content {
margin-left: 8%;
top: 0px;
}
#all {
height: 100%;
width: 100%;
}
#linkpython {
text-decoration: underline;
color: blue;
font-weight: normal;
margin-left: 0px;
border: 0;
}
a {
text-decoration: none;
color: rgba(0, 0, 0, 0.75);
font-weight: bold;
margin-left: 3%;
line-height: 130%;
}
.NavLinkContainer {
border-bottom: 1px solid darkgrey;
}
.bold_border {
border-top: 2px solid rgb(131, 131, 131);
}
</style>
</head>
<body>
<div id="all">
<div id="navbar">
<div class="NavLinkContainer"> <a href="#top">Python - Podstawy</a><br> </div>
<div class="NavLinkContainer"> <a href="#instalacja">Instalacja</a><br> </div>
<div class="NavLinkContainer"> <a href="#datatype">Typy danych</a><br> </div>
<div class="NavLinkContainer"> <a href="#zmienne">Zmienne</a><br> </div>
<div class="NavLinkContainer"> <a href="#print">Print</a><br> </div>
<div class="NavLinkContainer"> <a href="#import">Import</a><br> </div>
<div class="NavLinkContainer"> <a href="#error">Błędy</a><br> </div>
<div class="NavLinkContainer bold_border"> <a href="#warunki">If</a><br> </div>
<div class="NavLinkContainer"> <a href="#else">Else</a><br> </div>
<div class="NavLinkContainer"> <a href="#elif">Elif</a><br> </div>
<div class="NavLinkContainer"> <a href="#and_or">And - or</a><br> </div>
<div class="NavLinkContainer"> <a href="#if_short">Krótkie if</a><br> </div>
<div class="NavLinkContainer"> <a href="#if_else_short">Krótkie if z else</a><br> </div>
<div class="NavLinkContainer"> <a href="#pass">Pass</a><br> </div>
<div class="NavLinkContainer bold_border"> <a href="#funkcje">Funkcje</a> </div>
<div class="NavLinkContainer"> <a href="#funkcje_wywolywanie">Wywoływanie funkcji</a> </div>
<div class="NavLinkContainer"> <a href="#funkcje_domyslna_wartosc">Domyślna wartość</a> </div>
<div class="NavLinkContainer"> <a href="#funkcje_return">Zwracanie danych</a> </div>
<div class="NavLinkContainer bold_border"> <a href="#petle_while">Pętle while</a> </div>
<div class="NavLinkContainer"> <a href="#petle_for">Pętle for</a> </div>
<div class="NavLinkContainer"> <a href="#petle_range">range()</a> </div>
<div class="NavLinkContainer"> <a href="#petle_else">else</a> </div>
<div class="NavLinkContainer"> <a href="#petle_break">break</a> </div>
<div class="NavLinkContainer bold_border"> <a href="#pliki">obsługa plików</a> </div>
<div class="NavLinkContainer"> <a href="#example">Przykładowy program</a><br> </div>
</div>
<div id="content">
<h2 id="top">Python - Podstawy:</h2>
<!-- Instalacja -->
<h3 id="instalacja">Instalacja Pythona:</h3>
W celu uruchamiania plików Pythona (rozszerzenie .py) należy najpierw zainstalować odpowiedni interpreter. <br>
Można go pobrać ze strony <a id="linkpython" href="https://python.org">python.org</a> <br>
<h3 id="datatype">Typy danych:</h3>
Python automatycznie wykrywa i przypisuje typ danych zmiennej, nie musimy (choć możemy) używać specjalnego polecenia, aby określić typ danych. <br>
podstawowe typy danych w Pythonie: <ul>
<li>string - tekst np. "abcd"</li>
<li>integer - liczba całkowita np. 2</li>
<li>float - liczba niecałkowita np. 2.5</li>
<li>list - lista np. ["adam", 5, "marek", 13]</li>
<li>tuple - niezmienna lista np. ("adam", 5, "marek", 13)</li>
<li>bool - prawda lub fałsz np. True</li>
</ul>
typ danych można sprawdzić przy użyciu polecenia <code>type()</code>
przykład zastosowania:<pre><code>x = 5.5
print(type(x))</code></pre>
powyższy kod zwróci typ float. <br>
Możliwa jest konwersja danych jednego typu na inny. <br>
W tym celu należy użyć odpowiedniej funkcji np. <code>str(5)</code> lub <code>float("2.5")</code>
<!-- Zmienne -->
<h3 id="zmienne">Zmienne:</h3>
W odróżnieniu od większości języków programowania Python nie ma komendy służącej do deklarowania zmiennych. <br>
Zmienną tworzymy według tego schematu: <br>
<pre><code>nazwa_zmiennej = wartość_zmiennej</code></pre>
na przykład: <br>
<code>x = 5</code><br><br>
Zasady nazywania zmiennych: <br>
<ul>
<li>Nazwa zmiennej może zawierać tylko znaki alfanumeryczne i znaki podkreślenia (A-z, 0-9 i _)</li>
<li>Nazwa zmiennej musi zaczynać się od litery lub znaku podkreślenia (nie może zaczynać się od cyfry)</li>
<li>W nazwach zmiennych rozróżniana jest wielkość liter (owca, Owca i OWCA to trzy różne zmienne)</li>
</ul>
zmienne w Pythonie nie mają sztywno określonego typu, może on być zmieniany w każdej chwili: <br>
<code>x = 5</code> Teraz jest to zmienna typu integer. <br>
<code>x = "Kuba"</code> A teraz typu string. <br>
<h4 id="print">Print:</h4>
polecenie <code>print()</code> służy do wyświetlania danych w konsoli. <br>
Przykład zastosowania: <br>
<code>print("Witam")</code>
<h3 id="import">Import</h3>
polecenie <code>import</code> służy do importowania modułów i innych plików do naszego projektu. <br>
Używając <code>import pygame</code> importujemy bibliotekę pygame dostępną online, <br>
jest wiele podobnych bibliotek które ułatwiają życie i znacznie poszerzają możliwości Pythona. <br>
Tym samym sposobem możemy importować zmienne, funkcje, klasy itd. z innych naszych plików. <br>
Załóżmy, że w tym samym folderze co nasz program znajduje się inny plik o nazwie "UserMethods" <br>
Aby zaimportować wszystkie obiekty z tego pliku używamy <code>import UserMethods</code> pisanie rozszerzenia pliku nie jest potrzebne <br>
Jednak jeśli jesteśmy zainteresowani jedynie niektórymi obiektami z tego pliku, załóżmy że zmienną o nazwie "FirstNames" użyjemy poniższego kodu: <br>
<code>from UserMethods import FirstNames</code> najpierw podajemy plik z którego importujemy a potem co importujemy. <br>
Tak samo możemy postąpić z zewnętrznymi bibliotekami np. <code>from pygame import display</code> <br>
Warto wspomnieć o możliwości użycia innej nazwy biblioteki niż oryginalna. <br>
Polecenie <code>import pygame as pg</code> zaimportuje bibliotekę pygame jako "pg" <br>
Dzięki czemu aby użyć metody display zamiast <code>pygame.display</code> wystarczy napisać <code>pg.display</code>
<h3 id="error">Sprawdzanie błędów</h3>
Błędy są nieuniknione, zwłaszcza przy wszystkim co obsługuje inny użytkownik. <br>
Aby odpowiednio reagować na błędy, na przykład poprzez wyświetlenie odpowiedniego komunikatu błędu, <br>
należy użyć poleceń <code>try</code> i <code>except</code>. <br>
Taki program wykona kod zawarty w bloku <code>try</code>, a w razie wystąpienia błędu wykona kod zawarty w bloku <code>except</code>. <br>
Możemy użyk osobnych bloków <code>except</code> dla różnych typów błędów, <br>
w tym celu po poleceniu <code>except</code> piszemy nazwę błędu przy którym ma zostać wykonany ten blok. <br>
Jeżeli po poleceniu <code>except</code> nie będzie nazwy błędu, blok kodu wykona się przy każdym błędzie. <br>
Przykład zastosowania:
<pre><code>try:
print(a)
except NameError:
print("zmienna a nie istnieje")
except:
print("nieznany błąd") </code></pre>
<!-- Warunki -->
<h3 id="warunki">Warunki:</h3>
<h4>if:</h4>
Warunek jeśli stosujemy przy pomocy polecenia <code>if</code> na przykład: <br>
<pre><code>if 2 > 1:
print("2 jest większe od 1") </code></pre>
należy pamiętać od wcięciach w kodzie, ten przykład nie zadziała: <br>
<pre><code>if 2 > 1:
print("2 jest większe od 1") </code></pre>
W tym przykładzie print wykona się niezależnie od warunku if, wiele języków programowania używa nawiasów klamrowych, jednak python używa wcięć. <br>
<h4 id="else">else:</h4>
Polecenie <code>else</code> oznacza "wykonaj, jeśli poprzedni warunek nie jest prawdziwy" <br>
Przykład zastosowania: <br>
<pre><code>if x > y:
print("x jest większe od y")
else:
print("x nie jest większe od y")</code></pre>
<h4 id="elif">elif:</h4>
Polecenie <code>elif</code> oznacza "wykonaj, jeśli poprzedni warunek nie jest prawdziwy, a ten jest:" <br>
Przykład zastosowania: <br>
<pre><code>if x > y:
print("x jest większe od y")
elif x == y
print("x jest równe y")
elif x < y:
print("x jest mniejsze od y") </code></pre>
<h4 id="and_or">and i or</h4>
Polecenia <code>and</code> i <code>or</code> oznaczają "i" i "lub" <br>
<code>and</code> oznacza że obydwa warunki muszą być prawdziwe, a <code>or</code> że przynajmniej jeden warunek musi być prawdziwy. <br>
<h4 id="if_short">krótkie if:</h4>
Jeżeli po <code>if</code> chcesz wykonać tylko jedno polecenie możesz umieścić je w tej samej lini co <code>if</code> <br>
Przykład zastosowania: <br>
<pre><code>if x > y: print("x jest większe od y")</code></pre>
<h4 id="if_else_short">Krótkie if z else</h4>
Do krótkiego <code>if</code> możemy dodać <code>else</code> <br>
przykład zastosowania: <br>
<pre><code>print("x jest większe od y") if x > y else print("x nie jest większe od y")</code></pre>
<h4 id="pass">Polecenie pass</h4>
polecenia <code>if</code>, pętle <code>for</code> i funkcje nie mogą być puste, <br>
jeżeli nie chcesz aby wykonywało kod, w celu uniknięcia błędu użyj polecenia <code>pass</code> <br>
przykład zastosowania: <br>
<pre><code>if x > y: pass</code></pre>
polecenia <code>pass</code> można używać także w funkcjach i pętlach.
<br>
<!-- Funkcje-->
<h3 id="funkcje">Funkcje:</h3>
Funkcja jest to blok kodu który jest wykonywany tylko kiedy zostanie wywołany. <br>
Funkcje podczas wywoływania przyjmują argumenty których wartości później używają. <br>
Funkcja może zwracać dane po wykonaniu.<br>
<h4 id="funkcje_definiowanie">Definiowanie funkcji:<br></h4>
Funkcje definiujemy w następujący sposób:<br>
<pre><code>def NazwaFunkcji(argument1,argument2):</code></pre>
<h4 id="funkcje_wywolywanie">Wywoływanie funkcji:</h4>
Funkcje wywołujemy w następujący sposób:
<pre><code>NazwaFunkcji(WartośćArgumentu1,WartośćArgumentu2)</code></pre>
Wywołując funkcje musimy podać wartości dla wszystkich argumentów funkcji.<br>
Wartości argumentów są przypisywane do argumentów po kolei, zgodnie z kolejnością ich definiowania.<br>
Czyli pierwsza wartość którą podamy zostanie przypisana do pierwszego argumentu który zdefiniujemy, druga do drugiego itd.<br>
Jeżeli chcemy podać wartości argumentów w innej kolejności musimy ręcznie określić do jakiego argumentu podajemy wartość.<br>
Robimy to w następujący sposób:
<pre><code>NazwaFunkcji(argument2 = WartośćArgumentu2, argument1 = WartośćArgumentu1)</code></pre>
<h4 id="funkcje_domyslna_wartosc">Domyślna wartość argumentu funkcji:</h4>
Przy deklarowaniu funkcji możemy podać domyślną wartość argumentów. <br>
W tym jednym wypadku możemy wywołać funkcje bez podawania wartości wszystkich argumentów. <br>
Jeżeli nie podamy wartości argumentu funckja użyje domyślnej wartości. <br>
Tworzenie funkcji z domyślnym argumentem:<br>
<pre><code>def NazwaFunkcji(argument1 = WartośćArgumentu1)</code></pre>
teraz możemy uruchomić funkcje bez podawania wartości argumentu, jeśli jednak ją podamy zostanie ona użyta zamiast domyślnej. <br>
<h4 id="funkcje_return">Funkcja zwracająca dane:</h4>
Funkcja może zwracać dane, w tym celu należy użyć polecenia <code>return</code> <br>
Przykład zastosowania:
<pre><code>def NazwaFunkcji(argument1):
return argument1 + 1 </code></pre>
należy pamiętać o tym że polecenie <code>return</code> kończy wykonywanie się funkcji. <br>
Więc kod który znajduje się za poleceniem <code>return</code> nie zostanie wykonany. <br>
<!-- Pętle-->
<h3 id="petle">Pętle:</h3>
Python ma dwa rodzaje pętli, są to pętle <code>while</code> i <code>for</code><br>
<h4 id="petle_while">while:</h4>
Pętla <code>while</code> wykonuje kod dopóki warunek jest prawdziwy. <br>
Na poniższym przykładzie polecenie <code>print</code> będzie wykonywanie dopóki wartość zmiennej liczba będzie mniejsza od 5. <br>
z każdym wykonaniem pętla będzie zwiększać wartość zmiennej liczba o 1, dzięki temu pętla nie będzie wykonywać się w nieskończoność. <br>
<pre><code>liczba = 1
while liczba < 5:
print(liczba)
liczba += 1 </code></pre>
<h4 id="petle_for">for:</h4>
pętla <code>for</code> wykonuje się dla każdego elementu obiektu. <br>
przykład zastosowania:
<pre><code>ludzie = ["adam","piotr","zuza"]
for x in ludzie:
print(x) </code></pre>
Powyższy kod zwróci każdy element listy <code>ludzie</code> osobno. <br>
<code>x</code> może mieć dowolną inną nazwę, jest zmienną której wartością jest element dla którego pętla się aktualnie wykonuje. <br>
Jeżeli zamiast listy użyjemy napisu (string) pętla wykona się dla każdej litery osobno. <br>
<h4 id="petle_range">range:</h4>
Zamiast listy bądź napisu w pętli <code>for</code> możemy podać funkcje <code>range()</code> <br>
Przykład zastosowania:
<pre><code>for x in range(5):
print("dzień dobry")</code></pre>
Powyższa pętla wykona się 5 razy, od 0 do 4.
<h4 id="petle_else">else:</h4>
else można używać z <code>while</code> na tej samej zasadzie co z <cdoe>if</cdoe> <br>
Polecenie <code>else</code> oznacza wykona jeśli warunek jest fałszywy. <br>
W przypadku pętli <code>for</code> polecenie <code>else</code> wykona się po zakończeniu pętli. <br>
Przykład zastosowania:
<pre><code>liczba = 1
while liczba < 5:
print(liczba)
liczba += 1
else:
print("liczba nie jest mniejsza od 5")</code></pre>
<h4 id="petle_break">break:</h4>
Polecenie <code>break</code> zatrzymuje wykonywanie się pętli. <br>
Kod umieszczony po tym poleceniu nie zostanie wykonany. <br>
<h3 id="pliki">Obsługa plików:</h3>
<h4>wczytywanie plików:</h4>
Aby wczytać plik znajdujący się w tym samym folderze co program zależy użyć funkcji <code>open()</code> <br>
Przykład zastosowania: <br>
<code>plik = open("nazwapliku.txt")</code> <br>
<h4>odczyt plików:</h4>
Aby odczytać zawartość całego pliku należy użyć metody <code>read()</code> <br>
Przykład zastosowania: (po wczytaniu pliku jako "plik") <br>
<code>print(plik.read())</code> <br>
Odczytać fragment pliku możemy na 2 sposoby: <br>
Aby odczytać określoną ilość znaków z pliku jako argument metody <code>read()</code> należy podać ilość znaków które chcemy odczytać. <br>
Aby odczytać pierwszy wiersz należy użyć metody <code>readline()</code> <br>
Powyższe polecenie odczyta jeden wiersz pliku, <br>
jeżeli chcemy odczytać więcej wierszy należy je wykonać tyle razy ile wierszy chcemy odczytać (można do tego użyć pętli for) <br>
<h4>zapis do pliku:</h4>
Aby otworzyć istniejący plik z możliwością zapisu dodajemy drugi parametr to funkcji <code>open()</code> <br>
<code>"a"</code> - append: Daje do końca pliku. <br>
<code>"w"</code> - write: Nadpisuje zawartość pliku. <br>
Przykładowo polecenie <code>open("plik.txt","w")</code> otworzy plik "plik.txt" i podczas zapisu nadpisze jego zawartość. <br>
Jeżeli plik nie istnieje zostanie on automatycznie utworzony. <br>
Aby zapisać dane do pliku używamy metody <code>write()</code> jako argument metody podajemy to co chcemy zapisać. <br>
<h4>zamknięcie pliku:</h4>
Kiedy skończymy operacje na pliku należy go zamknąć. <br>
Do tego celu służy metoda <code>close()</code>, metoda ta nie przyjmuje argumentów. <br>
<h3 id="example">Przykładowy program:</h3>
Oto przykładowy program w Pythonie który otworzy istniejący plik "dane.txt", <br>
doda wszystkie występujące w nim liczby (1 na linie), nawet liczby niecałkowite (typ float). <br>
Po czym zapisze wynik dodawania do pliku "wynik.txt" (jeżeli plik nie istnieje to zostanie on utworzony)
<pre><code>try:
dane = open("dane.txt")
wynik = open("wynik.txt","w")
obliczenia = 0.0
for x in dane:
obliczenia += float(x)
wynik.write(str(obliczenia))
dane.close()
wynik.close()
except ValueError:
wynik = open("wynik.txt","w")
wynik.write("Wystąpił błąd! Jedna z wartości z pliku dane.txt nie jest liczbą.")
except FileNotFoundError:
wynik = open("wynik.txt","w")
wynik.write("Wystąpił błąd! Plik dane.txt nie istnieje. Sprawdź czy znajduje się on w tej samej lokalizacji co program.")
except:
wynik = open("wynik.txt","w")
wynik.write("Wystąpił nieznany błąd.") </code></pre>
Dwa najprawdopodobniejsze scenariusze błędu to: <br>
1: Plik dane.txt nie istnieje <br>
2: Dane wprowadzone do pliku dane.txt przez użytkownika nie są liczbą. <br>
Powyższe błędy są bardzo prawdopodobne przy nieprawidłowym użyciu, <br>
więc aby ułatwić użytkownikowi znalezienie błędu program nasłuchuje tych błędów i wyświetla odpowiednie komunikaty. <br>
Jeżeli użytkownik okaże się szczególnie kreatywny w tworzeniu błędów i zdoła wywołać nieprzewidziany błąd, program wyświetli bardziej ogólny komunikat. <br>
<!--Autor: Jan Maciuk, luty 2020-->
</div>
</div>
</body>
</html>