Python - Podstawy:

Instalacja Pythona:

W celu uruchamiania plików Pythona (rozszerzenie .py) należy najpierw zainstalować odpowiedni interpreter.
Można go pobrać ze strony python.org

Typy danych:

Python automatycznie wykrywa i przypisuje typ danych zmiennej, nie musimy (choć możemy) używać specjalnego polecenia, aby określić typ danych.
podstawowe typy danych w Pythonie: typ danych można sprawdzić przy użyciu polecenia type() przykład zastosowania:
x = 5.5       
print(type(x))
powyższy kod zwróci typ float.
Możliwa jest konwersja danych jednego typu na inny.
W tym celu należy użyć odpowiedniej funkcji np. str(5) lub float("2.5")

Zmienne:

W odróżnieniu od większości języków programowania Python nie ma komendy służącej do deklarowania zmiennych.
Zmienną tworzymy według tego schematu:
nazwa_zmiennej = wartość_zmiennej
na przykład:
x = 5

Zasady nazywania zmiennych:
zmienne w Pythonie nie mają sztywno określonego typu, może on być zmieniany w każdej chwili:
x = 5 Teraz jest to zmienna typu integer.
x = "Kuba" A teraz typu string.

Print:

polecenie print() służy do wyświetlania danych w konsoli.
Przykład zastosowania:
print("Witam")

Import

polecenie import służy do importowania modułów i innych plików do naszego projektu.
Używając import pygame importujemy bibliotekę pygame dostępną online,
jest wiele podobnych bibliotek które ułatwiają życie i znacznie poszerzają możliwości Pythona.
Tym samym sposobem możemy importować zmienne, funkcje, klasy itd. z innych naszych plików.
Załóżmy, że w tym samym folderze co nasz program znajduje się inny plik o nazwie "UserMethods"
Aby zaimportować wszystkie obiekty z tego pliku używamy import UserMethods pisanie rozszerzenia pliku nie jest potrzebne
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:
from UserMethods import FirstNames najpierw podajemy plik z którego importujemy a potem co importujemy.
Tak samo możemy postąpić z zewnętrznymi bibliotekami np. from pygame import display
Warto wspomnieć o możliwości użycia innej nazwy biblioteki niż oryginalna.
Polecenie import pygame as pg zaimportuje bibliotekę pygame jako "pg"
Dzięki czemu aby użyć metody display zamiast pygame.display wystarczy napisać pg.display

Sprawdzanie błędów

Błędy są nieuniknione, zwłaszcza przy wszystkim co obsługuje inny użytkownik.
Aby odpowiednio reagować na błędy, na przykład poprzez wyświetlenie odpowiedniego komunikatu błędu,
należy użyć poleceń try i except.
Taki program wykona kod zawarty w bloku try, a w razie wystąpienia błędu wykona kod zawarty w bloku except.
Możemy użyk osobnych bloków except dla różnych typów błędów,
w tym celu po poleceniu except piszemy nazwę błędu przy którym ma zostać wykonany ten blok.
Jeżeli po poleceniu except nie będzie nazwy błędu, blok kodu wykona się przy każdym błędzie.
Przykład zastosowania:
try:                               
    print(a)                       
except NameError:                  
    print("zmienna a nie istnieje")
except:                            
    print("nieznany błąd")         

Warunki:

if:

Warunek jeśli stosujemy przy pomocy polecenia if na przykład:
if 2 > 1:                        
    print("2 jest większe od 1") 
należy pamiętać od wcięciach w kodzie, ten przykład nie zadziała:
if 2 > 1:                    
print("2 jest większe od 1") 
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ęć.

else:

Polecenie else oznacza "wykonaj, jeśli poprzedni warunek nie jest prawdziwy"
Przykład zastosowania:
if x > y:                           
    print("x jest większe od y")    
else:                               
    print("x nie jest większe od y")

elif:

Polecenie elif oznacza "wykonaj, jeśli poprzedni warunek nie jest prawdziwy, a ten jest:"
Przykład zastosowania:
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") 

and i or

Polecenia and i or oznaczają "i" i "lub"
and oznacza że obydwa warunki muszą być prawdziwe, a or że przynajmniej jeden warunek musi być prawdziwy.

krótkie if:

Jeżeli po if chcesz wykonać tylko jedno polecenie możesz umieścić je w tej samej lini co if
Przykład zastosowania:
if x > y: print("x jest większe od y")

Krótkie if z else

Do krótkiego if możemy dodać else
przykład zastosowania:
print("x jest większe od y") if x > y else print("x nie jest większe od y")

Polecenie pass

polecenia if, pętle for i funkcje nie mogą być puste,
jeżeli nie chcesz aby wykonywało kod, w celu uniknięcia błędu użyj polecenia pass
przykład zastosowania:
if x > y: pass
polecenia pass można używać także w funkcjach i pętlach.

Funkcje:

Funkcja jest to blok kodu który jest wykonywany tylko kiedy zostanie wywołany.
Funkcje podczas wywoływania przyjmują argumenty których wartości później używają.
Funkcja może zwracać dane po wykonaniu.

Definiowanie funkcji:

Funkcje definiujemy w następujący sposób:
def NazwaFunkcji(argument1,argument2):

Wywoływanie funkcji:

Funkcje wywołujemy w następujący sposób:
NazwaFunkcji(WartośćArgumentu1,WartośćArgumentu2)
Wywołując funkcje musimy podać wartości dla wszystkich argumentów funkcji.
Wartości argumentów są przypisywane do argumentów po kolei, zgodnie z kolejnością ich definiowania.
Czyli pierwsza wartość którą podamy zostanie przypisana do pierwszego argumentu który zdefiniujemy, druga do drugiego itd.
Jeżeli chcemy podać wartości argumentów w innej kolejności musimy ręcznie określić do jakiego argumentu podajemy wartość.
Robimy to w następujący sposób:
NazwaFunkcji(argument2 = WartośćArgumentu2, argument1 = WartośćArgumentu1)

Domyślna wartość argumentu funkcji:

Przy deklarowaniu funkcji możemy podać domyślną wartość argumentów.
W tym jednym wypadku możemy wywołać funkcje bez podawania wartości wszystkich argumentów.
Jeżeli nie podamy wartości argumentu funckja użyje domyślnej wartości.
Tworzenie funkcji z domyślnym argumentem:
def NazwaFunkcji(argument1 = WartośćArgumentu1)
teraz możemy uruchomić funkcje bez podawania wartości argumentu, jeśli jednak ją podamy zostanie ona użyta zamiast domyślnej.

Funkcja zwracająca dane:

Funkcja może zwracać dane, w tym celu należy użyć polecenia return
Przykład zastosowania:
def NazwaFunkcji(argument1):
    return argument1 + 1    
należy pamiętać o tym że polecenie return kończy wykonywanie się funkcji.
Więc kod który znajduje się za poleceniem return nie zostanie wykonany.

Pętle:

Python ma dwa rodzaje pętli, są to pętle while i for

while:

Pętla while wykonuje kod dopóki warunek jest prawdziwy.
Na poniższym przykładzie polecenie print będzie wykonywanie dopóki wartość zmiennej liczba będzie mniejsza od 5.
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ść.
liczba = 1       
while liczba < 5:
    print(liczba)
    liczba += 1  

for:

pętla for wykonuje się dla każdego elementu obiektu.
przykład zastosowania:
ludzie = ["adam","piotr","zuza"]
for x in ludzie:                
    print(x)                    
Powyższy kod zwróci każdy element listy ludzie osobno.
x może mieć dowolną inną nazwę, jest zmienną której wartością jest element dla którego pętla się aktualnie wykonuje.
Jeżeli zamiast listy użyjemy napisu (string) pętla wykona się dla każdej litery osobno.

range:

Zamiast listy bądź napisu w pętli for możemy podać funkcje range()
Przykład zastosowania:
for x in range(5):      
    print("dzień dobry")
Powyższa pętla wykona się 5 razy, od 0 do 4.

else:

else można używać z while na tej samej zasadzie co z if
Polecenie else oznacza wykona jeśli warunek jest fałszywy.
W przypadku pętli for polecenie else wykona się po zakończeniu pętli.
Przykład zastosowania:
liczba = 1                                
while liczba < 5:                         
    print(liczba)                         
    liczba += 1                           
else:                                     
    print("liczba nie jest mniejsza od 5")

break:

Polecenie break zatrzymuje wykonywanie się pętli.
Kod umieszczony po tym poleceniu nie zostanie wykonany.

Obsługa plików:

wczytywanie plików:

Aby wczytać plik znajdujący się w tym samym folderze co program zależy użyć funkcji open()
Przykład zastosowania:
plik = open("nazwapliku.txt")

odczyt plików:

Aby odczytać zawartość całego pliku należy użyć metody read()
Przykład zastosowania: (po wczytaniu pliku jako "plik")
print(plik.read())
Odczytać fragment pliku możemy na 2 sposoby:
Aby odczytać określoną ilość znaków z pliku jako argument metody read() należy podać ilość znaków które chcemy odczytać.
Aby odczytać pierwszy wiersz należy użyć metody readline()
Powyższe polecenie odczyta jeden wiersz pliku,
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)

zapis do pliku:

Aby otworzyć istniejący plik z możliwością zapisu dodajemy drugi parametr to funkcji open()
"a" - append: Daje do końca pliku.
"w" - write: Nadpisuje zawartość pliku.
Przykładowo polecenie open("plik.txt","w") otworzy plik "plik.txt" i podczas zapisu nadpisze jego zawartość.
Jeżeli plik nie istnieje zostanie on automatycznie utworzony.
Aby zapisać dane do pliku używamy metody write() jako argument metody podajemy to co chcemy zapisać.

zamknięcie pliku:

Kiedy skończymy operacje na pliku należy go zamknąć.
Do tego celu służy metoda close(), metoda ta nie przyjmuje argumentów.

Przykładowy program:

Oto przykładowy program w Pythonie który otworzy istniejący plik "dane.txt",
doda wszystkie występujące w nim liczby (1 na linie), nawet liczby niecałkowite (typ float).
Po czym zapisze wynik dodawania do pliku "wynik.txt" (jeżeli plik nie istnieje to zostanie on utworzony)
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.")                                                                                   
Dwa najprawdopodobniejsze scenariusze błędu to:
1: Plik dane.txt nie istnieje
2: Dane wprowadzone do pliku dane.txt przez użytkownika nie są liczbą.
Powyższe błędy są bardzo prawdopodobne przy nieprawidłowym użyciu,
więc aby ułatwić użytkownikowi znalezienie błędu program nasłuchuje tych błędów i wyświetla odpowiednie komunikaty.
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.