Programátoři často porovnávají různé hodnoty. Pojďme se podívat, jak na to.
>>> 5 > 2
True
>>> 5 > 8
False
>>> 5 < 8
True
Když se Pythonu zeptáš, jestli je jedno číslo větší než druhé, odpoví ti
True
(pravda) nebo False
(nepravda).
Funguje to i se složitějšími výrazy:
>>> 5 > 2 * 2
True
„Větší než“ a „menší než“ jsou značky známé z matematiky. Chceš-li se ale zeptat, jestli jsou dvě čísla stejná, je potřba použít trochu jiný zápis:
>>> 1 == 1
True
Jedno rovnítko =
používáme pro přiřazení hodnoty do proměnné.
Když chceš zkontrolovat, jestli se věci navzájem rovnají, vždy, vždy
musíš dát dvě rovnítka ==
.
Další možnosti porovnávání jsou nerovnost (≠), větší nebo rovno (≤)
a meší nebo rovno (≥).
Většina lidí tyhle symboly nemá na klávesnici, a tak Python používá !=
, <=
a >=
.
>>> 5 != 2
True
>>> 3 <= 2
False
>>> 6 >= 12 / 2
True
Už jsi někdy slyšela výraz „srovnávat jablka a hrušky“? Zkusme v Pythonu ekvivalent:
>>> 1 > 'krajta'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'int' and 'str'
Stejně jako nelze srovnávat „jablka a hrušky“,
Python není schopen porovnávat řetězce (str
) a čísla (int
).
Místo toho zobrazí TypeError
a říká nám, že tyto dva typy nelze porovnat.
Co se stane, když v minulé ukázce zaměníš >
za ==
?
Chceš zkusit ještě něco? Zadej tohle:
>>> 6 > 2 and 2 < 3
True
>>> 3 > 2 and 2 < 1
False
>>> 3 > 2 or 2 < 1
True
V Pythonu můžeš zkombinovat několik porovnání do jednoho!
and
, obě strany musí být pravdivé, aby byl celý výraz pravdivý.or
, stačí aby jen jedna strana z porovnání byla pravdivá.Nebylo by pěkné zjistit, jestli tvoje číslo vyhrálo v loterii?
Máš-li seznam, operátorem in
se můžeš zeptat, jestli je v něm daný prvek:
>>> loterie = [3, 42, 12, 19, 30, 59]
>>> 18 in loterie
False
>>> 42 in loterie
True
Není to úplně porovnání, ale dostaneš stejný druh výsledku jako s <
či ==
.
Právě ses dozvěděla o novém typu objektu v Pythonu. Už známe typy řetězc, číslo, seznam nebo slovník; přidali jsme k nim pravdivostní hodnotu, nebo častěji anglicky boolean.
Pravdivostní hodnoty jsou jenom dvě: True
(pravda) nebo False
(nepravda).
Aby Python pochopil, že se jedná o tento typ,
je potřeba dávat pozor na velikost písmen.
true
, TRUE
, tRUE
nebude fungovat – jedině True
je správně.
Jako každou hodnotu, i boolean můžeš uložit do proměnné:
>>> a = True
>>> a
True
Stejně tak můžeš uložit i výsledek porovnání:
>>> a = 2 > 5
>>> a
False
V této sekci ses dozvěděla:
>
, >=
, ==
<=
, <
, !=
a in
and
a or
umí zkombinovat dvě porovnání.True
(pravda) nebo False
(nepravda).{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-podzim-snake:intro:8", "title": "Porovnávání a logika", "html": "\n \n \n\n <h1>Porovnávání věcí</h1>\n<p>Programátoři často porovnávají různé hodnoty. Pojďme se podívat, jak na to.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">5</span> <span class=\"o\">></span> <span class=\"mi\">2</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">5</span> <span class=\"o\">></span> <span class=\"mi\">8</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">5</span> <span class=\"o\"><</span> <span class=\"mi\">8</span>\n<span class=\"go\">True</span>\n</pre></div><p>Když se Pythonu zeptáš, jestli je jedno číslo větší než druhé, odpoví ti\n<code>True</code> (pravda) nebo <code>False</code> (nepravda).</p>\n<p>Funguje to i se složitějšími výrazy:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">5</span> <span class=\"o\">></span> <span class=\"mi\">2</span> <span class=\"o\">*</span> <span class=\"mi\">2</span>\n<span class=\"go\">True</span>\n</pre></div><p>„Větší než“ a „menší než“ jsou značky známé z matematiky.\nChceš-li se ale zeptat, jestli jsou dvě čísla stejná, je potřba použít\ntrochu jiný zápis:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">1</span> <span class=\"o\">==</span> <span class=\"mi\">1</span>\n<span class=\"go\">True</span>\n</pre></div><p>Jedno rovnítko <code>=</code> používáme pro <em>přiřazení</em> hodnoty do proměnné.\nKdyž chceš zkontrolovat, jestli se věci navzájem <em>rovnají</em>, vždy, <strong>vždy</strong>\nmusíš dát dvě rovnítka <code>==</code>.</p>\n<p>Další možnosti porovnávání jsou nerovnost (≠), větší nebo rovno (≤)\na meší nebo rovno (≥).\nVětšina lidí tyhle symboly nemá na klávesnici, a tak Python používá <code>!=</code>, <code><=</code>\na <code>>=</code>.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">5</span> <span class=\"o\">!=</span> <span class=\"mi\">2</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">3</span> <span class=\"o\"><=</span> <span class=\"mi\">2</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">6</span> <span class=\"o\">>=</span> <span class=\"mi\">12</span> <span class=\"o\">/</span> <span class=\"mi\">2</span>\n<span class=\"go\">True</span>\n</pre></div><p>Už jsi někdy slyšela výraz „srovnávat jablka a hrušky“? Zkusme v Pythonu ekvivalent:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">1</span> <span class=\"o\">></span> <span class=\"s1\">'krajta'</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n File <span class=\"nb\">"<stdin>"</span>, line <span class=\"m\">1</span>, in <span class=\"n\"><module></span>\n<span class=\"gr\">TypeError</span>: <span class=\"n\">'>' not supported between instances of 'int' and 'str'</span>\n</pre></div><p>Stejně jako nelze srovnávat „jablka a hrušky“,\nPython není schopen porovnávat řetězce (<code>str</code>) a čísla (<code>int</code>).\nMísto toho zobrazí <code>TypeError</code> a říká nám, že tyto dva typy nelze porovnat.</p>\n<p>Co se stane, když v minulé ukázce zaměníš <code>></code> za <code>==</code>?</p>\n<div class=\"solution\" id=\"solution-0\">\n <h3>Řešení</h3>\n <div class=\"solution-cover\">\n <a href=\"/2019/brno-podzim-snake/fast-track/bool/index/solutions/0/\"><span class=\"link-text\">Ukázat řešení</span></a>\n </div>\n <div class=\"solution-body\" aria-hidden=\"true\">\n <div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">1</span> <span class=\"o\">==</span> <span class=\"s1\">'krajta'</span>\n<span class=\"go\">False</span>\n</pre></div><p>Jablka a hrušky nemůžeš porovnávat, ale můžeš si potvrdit že jsou to dvě různé\nvěci.</p>\n </div>\n</div><h2>Logika</h2>\n<p>Chceš zkusit ještě něco? Zadej tohle:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"mi\">6</span> <span class=\"o\">></span> <span class=\"mi\">2</span> <span class=\"ow\">and</span> <span class=\"mi\">2</span> <span class=\"o\"><</span> <span class=\"mi\">3</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">3</span> <span class=\"o\">></span> <span class=\"mi\">2</span> <span class=\"ow\">and</span> <span class=\"mi\">2</span> <span class=\"o\"><</span> <span class=\"mi\">1</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">3</span> <span class=\"o\">></span> <span class=\"mi\">2</span> <span class=\"ow\">or</span> <span class=\"mi\">2</span> <span class=\"o\"><</span> <span class=\"mi\">1</span>\n<span class=\"go\">True</span>\n</pre></div><p>V Pythonu můžeš zkombinovat několik porovnání do jednoho!</p>\n<ul>\n<li>Pokud použiješ operátor <code>and</code>, obě strany musí být pravdivé, aby byl celý výraz pravdivý.</li>\n<li>Pokud použiješ operátor <code>or</code>, stačí aby jen jedna strana z porovnání byla pravdivá.</li>\n</ul>\n<h2>Přítomnost</h2>\n<p>Nebylo by pěkné zjistit, jestli tvoje číslo vyhrálo v loterii?\nMáš-li seznam, operátorem <code>in</code> se můžeš zeptat, jestli je v něm daný prvek:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">loterie</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">42</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">19</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">59</span><span class=\"p\">]</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">18</span> <span class=\"ow\">in</span> <span class=\"n\">loterie</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">>>> </span><span class=\"mi\">42</span> <span class=\"ow\">in</span> <span class=\"n\">loterie</span>\n<span class=\"go\">True</span>\n</pre></div><p>Není to úplně porovnání, ale dostaneš stejný druh výsledku jako s <code><</code> či <code>==</code>.</p>\n<h2>Pravdivostní hodnoty</h2>\n<p>Právě ses dozvěděla o novém typu objektu v Pythonu.\nUž známe typy řetězc, číslo, seznam nebo slovník; přidali jsme k nim\n<em>pravdivostní hodnotu</em>, nebo častěji anglicky <em>boolean</em>.</p>\n<p>Pravdivostní hodnoty jsou jenom dvě: <code>True</code> (pravda) nebo <code>False</code> (nepravda).</p>\n<p>Aby Python pochopil, že se jedná o tento typ,\nje potřeba dávat pozor na velikost písmen.\n<code>true</code>, <code>TRUE</code>, <code>tRUE</code> nebude fungovat – jedině <code>True</code> je správně.</p>\n<p>Jako každou hodnotu, i <em>boolean</em> můžeš uložit do proměnné:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">a</span> <span class=\"o\">=</span> <span class=\"bp\">True</span>\n<span class=\"gp\">>>> </span><span class=\"n\">a</span>\n<span class=\"go\">True</span>\n</pre></div><p>Stejně tak můžeš uložit i výsledek porovnání:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"n\">a</span> <span class=\"o\">=</span> <span class=\"mi\">2</span> <span class=\"o\">></span> <span class=\"mi\">5</span>\n<span class=\"gp\">>>> </span><span class=\"n\">a</span>\n<span class=\"go\">False</span>\n</pre></div><h2>Shrnutí</h2>\n<p>V této sekci ses dozvěděla:</p>\n<ul>\n<li>V Pythonu můžeš <strong>porovnávat</strong> pomocí operátorů <code>></code>, <code>>=</code>, <code>==</code> <code><=</code>, <code><</code>, <code>!=</code> a <code>in</code></li>\n<li>Operátory <code>and</code> a <code>or</code> umí <strong>zkombinovat</strong> dvě porovnání.</li>\n<li><strong>Boolean</strong> (pravdivostní hodnota) je typ, který může mít jednu ze dvou\nhodnot: <code>True</code> (pravda) nebo <code>False</code> (nepravda).</li>\n</ul>\n\n\n " } } }