Booleovské hodnoty
Při programování často potřebujete vědět, zda je výraz pravdivý nebo nepravdivý. V Pythonu můžete vyhodnotit jakýkoli výraz a získat jednu ze dvou odpovědí, True
nebo False
.
Když porovnáte dvě hodnoty, výraz se vyhodnotí a Python vrátí pravdivostní odpověď:
print(10 > 9) # True
print(10 == 9) # False
print(10 < 9) # False
Na základě těchto booleovských pravdivostních odpovědí můžete příkazy if
a else
větvit kód:
a, b = 11, 12
if b > a:
print("b je větší než a")
else:
print("b není větší než a")
Funkce bool()
umožňuje vyhodnotit jakoukoli hodnotu a vrací True
nebo False
:
print(bool("řetězec")) # True
print(bool(15)) # True
Téměř každá hodnota je vyhodnocena jako True
, pokud má nějaký obsah. Každý řetězec má hodnotu True
, kromě prázdných. Každé číslo, kromě 0. Jakýkoli seznam, n-tice, množina a slovník mají hodnotu True
, kromě prázdných. Není mnoho hodnot, které se vyhodnotí jako False
, kromě prázdných hodnot, jako jsou ()
, []
, {}
, „“, čísla 0 a hodnoty None
.
Objekt se vyhodnotí jako False
v případě, že máte objekt vytvořený z třídy s funkcí __len__()
, která vrací 0 nebo False
:
class myclass():
def __len__(self):
return 0
myobj = myclass()
print(bool(myobj))
Můžete vytvořit funkci s pravdivostní návratovou hodnotou:
def mojeFunkce():
return True
print(mojeFunkce())
A použít tuto funkci například v podmínce:
def mojeFunkce():
return True
if mojeFunkce():
print("ano")
else:
print("ne")
Python má mnoho vestavěných funkcí, které vracejí booleovskou hodnotu. Například funkci isinstance()
lze použít k určení, zda je objekt určitého datového typu:
x = 200
print(isinstance(x, int))
Operátory
Používají se k provádění operací s proměnnými a hodnotami.
Python rozděluje operátory do následujících skupin:
- aritmetické
- přiřazovací
- porovnávací
- logické
- identitní
- členské
- bitové
Aritmetické
Provádění běžných matematických operací:
operátor | popis | příklad |
---|---|---|
+ | sčítání | x + y |
– | odčítání | x – y |
* | násobení | x * y |
/ | dělení | x / y |
% | modul | x % y |
** | umocňování | x ** y |
// | celé dělení (floor division) | x // y |
Přiřazovací
Přiřazení hodnot proměnným:
operátor | příklad | ekvivalent |
---|---|---|
= | x = 5 | x = 5 |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x – 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
%= | x %= 3 | x = x % 3 |
//= | x //= 3 | x = x // 3 |
**= | x **= 3 | x = x ** 3 |
&= | x &= 3 | x = x & 3 |
|= | x |= 3 | x = x | 3 |
^= | x ^= 3 | x = x ^ 3 |
>>= | x >>= 3 | x = x >> 3 |
<<= | x <<= 3 | x = x << 3 |
:= | print(x := 3) | X = 3 print(x) |
Porovnávací
Porovnání dvou hodnot:
operátor | popis | příklad |
---|---|---|
== | rovná se | x == y |
!= | různý | x != y |
> | větší než | x > y |
< | menší než | x < y |
>= | větší nebo rovno | x >= y |
<= | menší nebo rovno | x <= y |
Logické
Používají se kombinaci výrazů:
operátor | popis | příklad |
---|---|---|
and | Vrátí True, pokud jsou oba výroky pravdivé | x < 5 and x < 10 |
or | Vrátí True, pokud je jeden z výroků pravdivý | x < 5 or x < 4 |
not | Obrátí výsledek, vrátí False, pokud je výsledek pravdivý | not(x < 5 and x < 10) |
Identitní
Používají se k porovnání objektů. Objekty se nemusí rovnat, ale musí být stejným objektem se stejným umístěním paměti:
operátor | popis | příklad |
---|---|---|
is | Vrátí hodnotu True, pokud jsou obě proměnné stejný objekt. | x is y |
is not | Vrátí hodnotu True, pokud nejsou obě proměnné stejný objekt. | x is not y |
Členství
Používají se k testování, zda je sekvence přítomna v objektu:
operátor | popis | příklad |
---|---|---|
in | Vrátí hodnotu True, pokud sekvence se zadanou hodnotou je v objektu přítomna | x in y |
not in | Vrátí hodnotu True, pokud sekvence se zadanou hodnotou není v objektu přítomna | x not in y |
Bitové
Porovnávání binárních hodnot:
operátor | název | význam | popis | příklad |
---|---|---|---|---|
& | AND | logický součin | nastaví bit na 1, pokud jsou oba bity 1 | x & y |
| | OR | logický součet | nastaví bit na 1, pokud je jeden ze dvou bitů 1 | x | y |
^ | XOR | exkluzivní disjunkce | nastaví bit na 1, pokud je pouze jeden ze dvou bitů 1 | x ^ y |
~ | NOT | negace | invertuje všechny bity | ~x |
<< | Zero fill left shift | posuv doleva | zatlačením nul zprava a vypadnutím bitu vlevo | x << 2 |
>> | Signed right shift | posuv doprava | zatlačením levého bitu zleva a vypadnutím pravého | x >> 2 |
Priorita operátorů
Popisuje pořadí, ve kterém jsou operace prováděny. Závorky mají nejvyšší prioritu, což znamená, že výrazy v závorkách musí být vyhodnoceny jako první:
print((3 + 1) - (3 + 1))
Násobení má vyšší prioritu než sčítání a vyhodnotí se před sčítáním:
print(10 + 3 * 6)
Operátory podle priority od nejvyšší po nejnižší:
operátor | popis |
---|---|
() | závorky |
** | umocňování |
+x -x ~x | unární plus/mínus a bitové NE |
* / // % | násobení, dělení, dělení beze zbytku a modul |
+ – | sčítání a odčítání |
<< >> | bitové posuny |
& | bitový AND |
^ | bitový XOR |
| | bitový OR |
== != > >= < <= is is not in not in | operátory porovnávací, identity a členství |
not | negace |
and | logický součin |
or | logický součet |
Pokud mají dva operátory stejnou prioritu, je výraz vyhodnocen zleva doprava.
Například sčítání +
a odčítání -
má stejnou prioritu a výraz je vyhodnocován zleva doprava:
print(3 + 2 - 9 + 4)