Nauč se Python > Materiály > Začátečnický kurz > První program > Nebo anebo a

Nebo anebo a

Vzpomínáš na tabulku operátorů z lekce o Porovnávání? Nyní si ji doplníme o další tři operátory, které se hodí do podmínek:

Symbol Příklad Popis
and True and False
2 < 3 and 5 < 3
„a zároveň“
or True or False
2 < 3 or 5 < 3
„a nebo“
not not False
not 5 < 3
„ne“

Například, chceš-li zjistit, jestli je kterékoli z dvou čísel záporné, můžeš napsat:

a = float(input("Zadej první stranu obdélníka: "))
b = float(input("Zadej druhou stranu obdélníka: "))

if a <= 0 or b <= 0:
    print("Délka nemůže být záporná!")

Falešní kamarádi

Pozor na to, že and a or nejsou anglická slovíčka, ale operátory, které spojují logické výrazy. Na obě strany and i or patří výraz, jehož hodnota je True/False (například porovnání).

if a <= 0 or b <= 0:

Může se zdát, že by se to dalo zkrátit a napsat if a or b <= 0: – „pokud je A nebo B menší než 0“. Ale to si Python přeloží na:

if (a) or (b <= 0):

... tedy „pokud platí A, a nebo je B menší než 0“. A to moc smyslu nedává. (Kdy „platí“ celé číslo?)

Šťastná/Bohatá

Pro příklad použijeme and ve vylepšeném programu, který rozdává nejapné rady do života. Zkus si ho projít a okomentovat části, které nejsou na první pohled jasné.

# Tento program rozdává nejapné rady do života.

print('Odpovídej "ano" nebo "ne".')
stastna_retezec = input('Jsi šťastná? ')
if stastna_retezec == 'ano' or stastna_retezec == 'Ano':
    stastna = True
elif stastna_retezec == 'ne' or stastna_retezec == 'Ne':
    stastna = False
else:
    print('Nerozumím!')

bohata_retezec = input('Jsi bohatá? ')
if bohata_retezec == 'ano' or bohata_retezec == 'Ano':
    bohata = True
elif bohata_retezec == 'ne' or bohata_retezec == 'Ne':
    bohata = False
else:
    print('Nerozumím!')

if bohata and stastna:
    # Je bohatá a zároveň štǎstná, ta se má.
    print('Gratuluji!')
elif bohata:
    # Je bohatá, ale není „bohatá a zároveň šťastná“,
    # takže musí být jen bohatá.
    print('Zkus se víc usmívat.')
elif stastna:
    # Tady musí být jen šťastná.
    print('Zkus míň utrácet.')
else:
    # A tady víme, že není ani šťastná, ani bohatá.
    print('To je mi líto.')

Všimni si co se stane, když zadáš něco jiného než „ano“ nebo „ne“.

Proměnná stastna nebo bohata se nenastaví, a když je ji potom potřeba použít, program skončí s chybou.

O tom, jak se vypořádat s chybami, si povíme později.