Podstawy programowania w języku Python

Python to język programowania. W 2020 roku oficjalnie zakończono wsparcie dla Python 2.7 - prawdopodobnie najpopularniejszej wersji tego języka. Następcą jest Python 3, którego podstawy postaramy się tutaj przybliżyć.

Na początku będziemy posługiwać się tylko “terminalem”. Zobaczymy tam symbol zachęty “bash” $. Wpisujemy komendę python3 i po ujrzeniu symbolu zachęty “Python” >>>` możemy zacząć pisać w języku Python. Jest to dobry sposób, żeby sprawdzić jak coś działa.

Typy danych

Ludzie komunikując się ze sobą są w stanie wyczytać z kontekstu rozmowy czym są dane. Komputery tego nie potrafią (a przynajmniej nie jest to łatwe) - radzą sobie z tym poprzez nadawanie danym typów. Python używa konkretnej “strategii” przy określaniu typów - robi to podczas przypisywania danych do zmiennych - nazywamy to “duck typing”.

Co to są te dane, typy i zmienne?

Wartości to dane na których nasz program ma operować. Typy to rodzaj powyższej wartości. Zmienne to nazwy wartości nadawane przez programistę.

Poniższy kod przypisuje pewne wartości do zmiennych:

Note

Należy zwrócić uwagę na znak =, który nie oznacza “równa się” ale “przypisz” - czyli “do name przypisz Jan

1
2
3
>>> name = "Jan"
>>> surname = "Kowalski"
>>> age = 30

Zastanówmy się teraz jakimi wartościami będą phone, pesel i account_balance. Dopiszmy te dane:

1
2
3
4
>>> phone = "123000456"
>>> pesel = "85120151657"
>>> account_balance = 10023.54
>>> driving_license = True

Zadeklarowaliśmy 7 zmiennych. Teraz sprawdźmy jakiego typu są to zmienne. Umożliwi nam to zbudowana funkcja type. Funkcje należy wywołać podając argumenty wymagane do jej wykonania (wyjaśnię to za chwilę).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
>>> type(phone)
<class 'str'>
>>> type(account_balance)
<class 'float'>
>>> type(driving_license)
<class 'bool'>
>>> type(age)
<class 'int'>
>>> type(surname)
<class 'str'>

Oto przed nami mamy 4 różne (prymitywne - podstawowe) typy danych:

String (str)

ciąg znaków

Integer (int)

liczba całkowita

Float (float)

liczba zmiennoprzecinkowa

Boolean (bool)

wartość która może być prawdą lub fałszem

Operowanie na danch

Na tym etapie rozróżnianie ciągów znaków od numerów powinno mieć trochę większy sens.

Sprawdźmy co się stanie kiedy dodamy do siebie name i surname

1
2
3
>>> name + surname
>>> name + " " + surname
>>> name + "." + surname + "@gmail.com"

Spróbujmy z innymi operacjami na innych zmiennych:

1
2
3
4
5
6
>>> name + age
>>> age + 1
>>> age * 2
>>> stan_konta + 3000000
>>> stan_konta / 100
>>> name * 3

Nie możemy do siebie dodać name i age taka wartość nie ma (większego) sensu, ale gdy np. dodamy do siebie dwa ciągi znaków to zwrócone zostaną ich wartości “doklejone” do siebie.

Wynik różnorakich operacji można ponownie zapisać do zmiennej, np.

1
2
3
>>> age = age + 1
>>> email = name + "." + surname + "@gmail.com"
>>> print(email)

Note

Zwróćmy uwagę na kolejną zbudowaną funkcję print, która służy do wyświetlania zawartości zmiennej podanej w pierwszym argumencie.

Porównywanie danych

Podstawowymi porównaniami będą operatory większości, mniejszości i równości. Takie porównania zwracać nam będą wartości o typie bool - czyli zadawać będziemy pytania np. “Czy wartość pod zmienną age jest większa od 18” - na pytania “czy” odpowiada się “tak” lub “nie” czyli True lub False.

1
2
3
4
5
6
>>> age > 18
>>> age = 14
>>> age > 18
>>> age <= 14
>>> name == name
>>> name == surname

Prosty skrypt

Przejdźmy teraz do edytora. Tworzymy plik o nazwie check_age.py i otwieramy go w edytorze. W edytorze nie ma już symbolu zachęty.

check_age.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
name = input("Podaj swoje imie: ")
age = input("Podaj swoj wiek: ")

age = int(age)

if age < 18:
    print("Sorry, " + name + " nie dostajesz piwa.")
elif age > 100:
    print("Sorry, " + name + " ZUS nie dopuszcza do siebie faktu, ze istniejesz.")
else:
    print("Proszę, " + name + " oto Twoje piwo.")

Przejdźmy przez ten kod linia po linii.

  • W pierwszej linii używamy wbudowanej funkcji input, która zapyta użytkownika o to co zostało podane jako argument przy wywołaniu ów funkcji. Dodatkowo wynik tej funkcji (to co użytkownik wpisze) zostanie przypisane do zmiennej name.

  • W drugiej linii robimy to samo, ale pytamy o wiek i przypisujemy go do zmiennej wiek.

  • W czwartej linii zmieniamy typ zmiennej - funkcja input zwraca tylko string’i, a kiedy takowe zawierają tylko cyfry można z nich zrobić typ integer. Taka operacja to “rzucanie zmiennej na inny typ” (eng: cast).

  • Szósta linia to instrukcja warunkowa if - dodatkowo jest to instrukcja otwierająca blok kodu - zawartość bloku kodu (czyli kod który jest wcięty) zostanie uruchomiony tylko jeśli warunek posotanie spełniony.

  • Siódma linia wykona się tylko kiedy wartość zmiennej if będzie mniejsza niż 18 i wyświetli na ekranie użytkownika tekst składający się z wpisanego w skrypt tekstu i imienia podanego przez użytkownika.

  • Ósma linia stawia kolejny warunek, który będzie sprawdzony tylko jeśli wynik poprzedniego nie był prawdziwy.

  • Dziewiąta wykona się tylko jeśli warunek w poprzedniej linii był prawdziwy.

  • Dziesiąta określa blok kodu, który ma się wykonać tylko jeśli pozostałe warunki “nie były prawdziwe” i wykona kod z linii jedenastej.

Note

wcięcia - Python nie używa znaków { } do deklaracji bloków kodu. Zamiast tego kod należy wciąć. Można używać tabulatorów lub spacji (nie obu) - najczęściej są to 4 spacje.

Jeżeli czyli if to fundament programowania w każdym języku i można zaaplikować go do wszystkiego co się dzieje w świecie, zwłaszcza jeśli jest mowa o elektronice. Przykładami mogą być:

Jeżeli czerwone światło drogowe było włączone przez 15 sekund to:

przełącz na zielone światło.

Jeżeli przycisk “ON” został wciśnięty na telewizorze to:
Jeżeli telewizor był wyłączony to:

włącz go

w przeciwnym wypadku:

wyłącz go

Koniec? Co dalej?

  1. Poćwicz to co dziś przerobiliśmy.

  2. Napisz kalkulator (w pliku calculator.py), który będzie pobierał od użytkownika dwie liczby i pytał jaką operację na nich przeprowadzić, przeprowadzał ją i wyświetlał wynik.

Na następnym spotkaniu przećwiczymy pętle, listy, słowniki, funkcje i klasy.