
Czym jest typ danych logiczny w Pythonie?
W artykule znajdziesz informacje na temat tego, czym jest typ danych logiczny w Pythonie, do czego można wykorzystać typ logiczny oraz jak wykonywać na nim operacje.
Czym są zmienne oraz typy danych w języku Python?
Typy danych w języku Python określają rodzaj wartości, jaką może przyjąć dana zmienna, oraz operacje, które można na niej wykonywać.
Python oferuje wbudowane typy danych, takie jak:
- liczby całkowite (int)
- liczby zmiennoprzecinkowe (float)
- ciąg znaków (string)
- wartości logiczne (bool)
- słownik (dict)
- lista (list)
- krotka (tuple)
Zmienne w Pythonie to miejsca w pamięci, w których przechowywane są wartości. Są one używane do przechowywania danych, takich jak liczby, teksty, listy czy inne obiekty, które mogą być później wykorzystywane w programie.
Podczas deklaracji zmiennej Python automatycznie przypisuje jej odpowiedni typ na podstawie danych, które będą w tej zmiennej przechowywane. Jeśli do zmiennej przypisujemy jedynkę, zmienna będzie typu liczba całkowita (ang. integer). Dlatego w Pythonie nie musimy deklarować typów danych.
Informacje na temat typów danych znajdziesz w naszym artykule Python typy danych.
Jak sprawdzić typ zmiennej?
Aby sprawdzić typ zmiennej w Pythonie, używamy funkcji type().
x = 10 type(x) <class 'int'> y = 'Hello' type(y) <class 'str'>
W przykładzie:
- do zmiennej x przypisujemy liczbę całkowitą 10. Za pomocą funkcji type() sprawdzamy typ zmiennej. W wyniku otrzymujemy class 'int’
- do zmiennej y przypisujemy słowo „Hello”. Za pomocą funkcji type() sprawdzamy typ zmiennej. W wyniku otrzymujemy class 'str’.
Class 'int’ i class 'str’
Jeśli używamy funkcji type(), aby sprawdzić typ zmiennej, w wyniku otrzymujemy np. class 'int’.
- int to wbudowana klasa w Pythonie, która reprezentuje liczby całkowite zarówno dodatnie, jak i ujemne, bez części dziesiętnych. Wynik class 'int’ oznacza, że zmienna przechowuje liczbę całkowitą.
- str to wbudowana klasa, która reprezentuje dane tekstowe. Wynik class 'str’ oznacza, że obiekt jest typu str, czyli jest to ciąg znaków (tekst).
Więcej informacji na temat zmiennych znajdziesz w artykule Python zmienne.
Czym jest typ danych logiczny w Pythonie?
Typ logiczny (bool, boolean) w Pythonie to wbudowany typ danych, który reprezentuje wartości logiczne Prawda (ang. True) i Fałsz (ang. False). Służy on do wykonywania operacji logicznych i jest często wykorzystywany w warunkach, pętlach oraz wyrażeniach porównawczych.
W Pythonie typ bool może być oznaczany za pomocą wartości 0 lub 1. Zero oznacza Fałsz, a jedynka oznacza Prawdę.
Wartości logiczne są wynikiem działania operatorów porównania:
Operator | Opis |
---|---|
== | równa się |
!= | nie równa się |
> | większe niż |
< | mniejsze niż |
>= | większe niż lub równe |
<= | mniejsze niż lub równe |
Wartości logiczne mogą być łączone za pomocą operatorów:
Operator | Opis |
---|---|
AND | obydwa warunki muszą być prawdziwe |
OR | jeden z warunków musi być prawdziwy |
NOT | jednoargumentowy operator, którego wynikiem jest zaprzeczenie |
Rezultatem działania każdego z operatorów porównania jest wartość typu logicznego, mogąca przybierać w wyniku tylko True lub False.
Porównania wartości liczbowych
Porównania wartości liczbowych w Pythonie pozwalają sprawdzić relacje między wartościami liczbowymi, takie jak równość, nierówność, czy jedna liczba jest większa lub mniejsza od drugiej.
Porównujemy, czy 2 równa się 2 i otrzymujemy wynik True:
2==2 True
Porównujemy, czy 2 jest różne od 2 i otrzymujemy wynik False:
2!=2 False
Porównujemy, czy wartość 3.14 jest większa od wartości 4.14 i otrzymujemy wynik False.
3.14 > 4.14 False
Porównania wartości tekstowych
W przypadku, gdy porównywane są napisy, kryterium porównania jest kolejność leksykograficzna np.
- „a” jest mniejsze od „b”
- „a” jest mniejsze od „aa”
Sprawdzamy, czy „a” jest równe „b” i otrzymujemy wynik False.
'a' == 'b' False
W Pythonie ciągi znaków piszemy w apostrofach lub w cudzysłowach. Wielkość liter ma znaczenie.
Sprawdzamy, czy mała litera „a” równa się dużej literze „A”. W wyniku otrzymujemy False.
'a' == 'A' False
Sprawdzamy, czy wprowadzone przez użytkownika hasło jest większe (alfabetycznie) od innego, wstępnie ustawionego hasła.
- Do zmiennej stored_password przypisane jest hasło wstępnie ustalone
- Do zmiennej user_password przypisane jest hasło użytkownika
- Sprawdzamy, czy hasło użytkownika jest większe niż wstępnie ustalone hasło. W wyniku otrzymujemy wartość True.
stored_password = 'SecurePass2023' user_password = 'SuperSecurePass2023' user_password > stored_password True
Porównania wyrażeń
Wyrażenia w Pythonie to fragmenty kodu, które są obliczane do jednej konkretnej wartości np. wyrażenie 2 + 2 obliczane jest do wartości 4.
W przypadku, gdy porównywane są wyrażenia, kryterium porównania jest rezultat wyrażenia.
10/2>1 True
W przykładzie wykonane są dwa działania:
- Dzielenie 10/2 – najpierw wykonywana jest operacja dzielenia, która zwraca wynik 5.0, gdyż wynik dzielenia w Pythonie jest zawsze typu float.
- Porównanie 5.0 > 1 – wynik dzielenia (5.0) jest porównywany z 1. To porównanie zwróci wartość logiczną True, gdyż 5.0 jest większe niż 1.
Porównania wielokrotne
W Pythonie porównania wielokrotne pozwalają na jednoczesne sprawdzenie wielu warunków w jednym wyrażeniu. Dzięki temu możemy porównać różne wartości np. w ramach zakresu.
Możemy pisać osobne warunki lub użyć składni łańcuchowych porównań:
# Oddzielnie napisane warunki 1 < 2 and 2 < 3 True # Łańcuchowe porównanie 1 < 2 < 3 True
W przykładzie otrzymujemy wynik True, gdyż 1 jest mniejsze od 2 i 2 jest mniejsze od 3.
# Oddzielnie napisane warunki 3 > 1 and 1 < 2 True # Łańcuchowe porównanie 3 > 1 < 2 True
W przykładzie otrzymujemy True gdyż 3 jest większe od 1 i 1 jest mniejsze od 2.
Porównania łączone
Porównania łączone w Pythonie pozwalają sprawdzać kilka warunków jednocześnie w jednym wyrażeniu.
(5 > 2) == (3 < 5) True
W przykładzie oceniane są dwa oddzielne warunki. Warunki te zwracają wartości logiczne, które są następnie ze sobą porównywane.
- Pierwszy warunek – (5 > 2) jest obliczony jako True, gdyż 5 jest większe niż 2.
- Drugi warunek – (3 < 5) jest obliczony jako True, gdyż 3 jest mniejsze niż 5.
- Porównanie – wyniki obydwu warunków (True i True) są porównywane za pomocą operatora ==. W związku z tym, że True równa się True, wynik końcowy to też wartość True.
(7*2)<(15-4) False
Wyrażenie (7 * 2) < (15 - 4) jest przykładem porównania, które najpierw oblicza wartości po obydwu stronach operatora <, a następnie sprawdza ich relację.
- Obliczenie lewej strony: 7 * 2 daje wynik 14
- Obliczenie prawej strony: 15 – 4 daje wynik 11
- Porównanie: 14 < 11 sprawdza, czy wartość po lewej stronie (14) jest mniejsza niż wartość po prawej stronie (11). Ponieważ 14 nie jest mniejsze niż 11, wynik całego wyrażenia to False
Operator AND w Pythonie
Operator AND w Pythonie służy do łączenia dwóch lub więcej warunków logicznych. Wynik działania tego operatora jest True tylko wtedy, gdy wszystkie warunki nim połączone zostały spełnione, czyli mają wartość True. Jeśli chociaż jeden z warunków zwraca False, to całe wyrażenie zwraca False.
W przypadku operatora AND występuje tzw. krótkie obliczanie (ang. short-circuit evaluation). Oznacza to, że obliczanie zostaje zakończone wynikiem False w momencie, w którym znaleziony zostanie pierwszy warunek zwracający wartość False.
2 == 4 and 1 < 3 and 3 < 2 False
W przykładzie:
- Pierwszy warunek 2 == 4 – sprawdza, czy liczba 2 jest równa 4. Wynik to False
- W tym przypadku, ponieważ pierwszy warunek zwraca False, kolejne warunki (1 < 3 i 3 < 2) nie są obliczane
- Wynik końcowy – całe wyrażenie zwraca False, gdyż wszystkie warunki połączone AND muszą być True, aby wynik był True.
2 == 2 and 1 < 3 and 3 > 2 True
W wyniku otrzymujemy True gdyż wszystkie części wyrażenia zwróciły True tj.
- 2 == 2 wynik True
- 1 < 3 wynik True
- 3 > 2 wynik True
Operator OR w Pythonie
Operator OR w Pythonie pozwala sprawdzić, czy przynajmniej jeden z podanych warunków jest spełniony. Jeśli którykolwiek z warunków zwraca True, całe wyrażenie zwraca True. Wynik False jest zwracany tylko wtedy, gdy wszystkie warunki zwrócą False.
2==4 or 1<3 or 3<2 True
W przykładzie:
- pierwszy warunek 2==4 zwraca wartość False
- W związku z tym, że pierwszy warunek zwrócił False, sprawdzany jest kolejny warunek 1 < 3. Warunek ten zwraca True. Całość wyrażenia zwraca więc wartość True, gdyż w przypadku operatora OR wystarczy, że jeden z warunków jest prawdziwy, aby całość była prawdziwa.
- Kolejny warunek 3 < 2 nie jest już sprawdzany, gdyż w przypadku operatora OR również występuje krótkie obliczanie (ang. short-circuit evaluation).
W przypadku operatora OR wynik False otrzymujemy, tylko jeśli wszystkie warunki zwrócą False.
Porównanie operatorów AND i OR:
Warunek A | Warunek B | A and B | A or B |
---|---|---|---|
True | True | True | True |
True | False | False | True |
False | True | False | True |
False | False | False | False |
Operator negacji NOT w Pythonie
Operator negacji NOT w Pythonie służy do odwracania wartości logicznej wyrażenia. Jeśli wyrażenie zwraca True, zastosowanie NOT zmienia wynik na False i odwrotnie.
not 2==2 False
W przykładzie:
- Najpierw obliczane jest wyrażenie 2 == 2, które sprawdza, czy liczba 2 jest równa 2. Wynik tego porównania to True, gdyż obydwie liczby są równe.
- Operator NOT odwraca wartość logiczną wyniku wyrażenia. Skoro 2 == 2 daje True, to not True zwraca False.
email = "" print("Nie podano adresu e-mail:", not email) # Wynik: Nie podano adresu e-mail: True
Puste ciągi znaków („”) są traktowane jako False w kontekście logicznym. Jeśli zmienna email jest pusta, jej wartość logiczna wynosi False. Operator not odwraca wartość logiczną – not email zwraca True, gdy email jest pusty.
Kolejność wykonywania operatorów
W Pythonie kolejność wykonywania operatorów określa, które operacje są wykonywane najpierw w wyrażeniu zawierającym różne operatory. Podobnie jak w matematyce, Python przestrzega ustalonych zasad, aby zapewnić jednoznaczność obliczeń.
Najważniejsze zasady kolejności wykonywania operacji:
- Nawiasy – operacje w nawiasach () mają najwyższy priorytet i są wykonywane jako pierwsze.
2 * (3 + 4)
Najpierw wykona się dodawanie 3 + 4, a później wynik dodawania czyli cyfra 7 zostanie pomnożona przez 2.
- Operatory arytmetyczne:
- Najpierw potęgowanie (**)
- Następnie mnożenie (*), dzielenie (/), dzielenie całkowite (//) i reszta z dzielenia (%)
- Na końcu dodawanie (+) i odejmowanie (-)
- Operatory porównań – operatory, takie jak <, >, <=, >=, ==, != są obliczane po operatorach arytmetycznych
- Operator logiczny NOT ma wyższy priorytet niż operator AND i OR
- Operatory logiczne AND i OR – AND jest wykonywany przed OR
Takie same operatory wykonywane są w kolejności od lewej do prawej.
Jeśli w programie używamy operatorów AND i OR powinniśmy zwrócić szczególną uwagę na nawiasy.
czy_w_klubie = False punkty = 120 suma_zakupow = 600 czy_rabat = czy_w_klubie and (punkty > 100 or suma_zakupow > 500) czy_rabat # Wynik: False
W przykładzie sprawdzamy, czy klient może otrzymać rabat. Rabat jest należny tylko, jeśli klient jest w klubie oraz zebrał więcej niż 100 punktów lub zrobił zakupy za więcej niż 500 zł.
Kolejność wykonywania operacji jest następująca:
- najpierw operator OR – sprawdzamy, czy klient zebrał więcej niż 100 punktów lub czy zrobił zakupy za więcej niż 500 zł
- następnie w operatorze AND następuje sprawdzenie, czy klient jest w klubie i co jest wynikiem operatora OR. Jeśli klient jest w klubie i wynikiem operatora OR jest True, operator AND zwraca wartość True i klient może otrzymać rabat
- tutaj w wyniku otrzymamy False, gdyż klient nie jest w klubie.
Gdyby nie było nawiasu kolejność wykonywania byłaby następująca:
- najpierw operator AND i sprawdzenie czy klient jest w klubie oraz czy zebrał więcej niż 100 punktów
- później operator OR i sprawdzenie czy wynikiem działania operatora AND jest True lub czy klient zrobił zakupy za więcej niż 500 zł
- w wyniku otrzymalibyśmy True mimo, że klient nie jest w klubie.
Konwersja innych typów do typu bool
W Pythonie możemy używać funkcji bool(), aby zamienić dowolny obiekt (liczbę, tekst, listę itp.) na wartość logiczną True lub False.
- Każda liczba różna od zera (np. 1, -5, 3.14) zamienia się na True
- Zero (liczba całkowita 0 oraz zmiennoprzecinkowa 0.0) zamienia się na False
- Pusty tekst (np. „”), pusta lista ([]), pusty słownik ({}) i inne „puste” obiekty zamieniają się na False
- Każdy tekst (np. „Hello”), lista z elementami (np. [1, 2, 3]) i inne „niepuste” obiekty zamieniają się na True
bool(5) # True, gdyż 5 to liczba różna od 0 bool(0) # False, gdyż 0 to liczba, która daje False bool("Hello") # True, gdyż "Hello" to tekst, który nie jest pusty bool("") # False, gdyż pusty tekst to fałsz bool([1, 2, 3]) # True, gdyż lista zawiera elementy bool([]) # False, gdyż [] (pusta lista) to fałsz
Typ danych logiczny w Pythonie przydaje się szczególnie w sytuacjach, gdy konieczne jest podejmowanie decyzji w oparciu o warunki. Informacje na temat rozgałęziania programów za pomocą instrukcji warunkowych znajdziesz w artykule Instrukcje warunkowe w Pythonie.
Zapraszamy na nasz kurs z programowania w Pythonie od podstaw, na którym zobaczysz w praktyce, czym jest typ danych logiczny w Pythonie, przećwiczysz typy danych na konkretnych zadaniach biznesowych, opanujesz instrukcje warunkowe oraz poznasz inne elementy podstawowej składni Pythona.
