Výraz x>10 bude pravdivý, když x bude třeba 100. Výrazu 'x>10' se říká podmínka, která může být pravdivá nebo nepravdivá, podle toho, kolik je x. Aby byla nepravdivá, muselo by x být třeba 5 nebo -62. Dokonce i pro x=10 je podmínka nepravdivá. S podmínkami úzce souvisí příkaz if, o kterém je dnešní lekce.
Podmínka if
Podmínka if je 'když něco tak něco'. Když potřebujeme něco udělat za podmínky, že se stalo něco jiného. V Pythonu má následující průzračnou konstrukci:
if podmínka1:
tělo1
elif podmínka2:
tělo2:
elif podmínka3:
tělo3
...
...
else:
těloElse
Znamená to slovně toto: Když bude splněná podmínka1, proveď tělo1 a ukonči if. Pokud nebude, podívej se, jestli platí podmínka2. Pokud je pravdivá, pokud platí, tak proveď tělo2 a ukonči if. A tak dále. Pokud žádné if ani elif pravdivé nebude, proveď vše, co je v else, tedy těloElse. Nikdy se nemůže stát, že by se provedly 2 těla. Vždy jen jedno, a to vždy to první pravdivé. Může se také stát, že se neprovede nic - to tehdy, když tam nebude else a všechno ostatní bude Nepravda.
x=input('Zadej kolik ti je: ')
if x<0:
print "Jeste jsi se nenarodil."
elif x<6:
print "Uz jsi na svete a prozivas krasne obdobi sveho zivota."
elif x<15:
print "Skola nic moc, co?"
elif x<18:
print "Občanka je super!"
elif x==18:
print "Dosahl jsi plnoletosti.."
else:
print "Je ti neco mezi 19 a smrti."
Poviné je akorát if. Ostatní : elif i else můžete používat, pokud se vám to hodí. V nejednodušším tvaru if tedy vypadá např. takto:
if x<10:
print "Jeste nemas 10 roku."
Co je to podmínka
Co všechno můžeme místo podmínka1, podmínka2,... dosazovat? Podmínka může nabývat 2 hodnot. Pravda nebo Nepravda, tedy lež. Buď je něco pravdivé nebo ne. Nemůže se tedy stát, že nabude hodnoty 'nevim' nebo '10'.
Co je to Pravda?
Pravda, jak ji intuitvně chápeme i my, je např. x>10, když x bude třeba 100. Ten výraz 'x>10' je tedy podmínka a je v našem případě pravdivá. Aby byla nepravdivá, muselo by x být třebas 5 nebo -62. Pro x=10 je podmínka také nepravdivá.
pojem Pravda oproti naší představě ještě trochu rozšiřuje. Jakékoliv číslo různé od nuly je pro něj Pravda. Jakýkoliv řetězec odlišný od prázdného řetězce "" je pravdivý.
jmeno='python'
if jmeno:
print "Toto se vytiskne vzdy."
Co je Nepravda?
Jednoduše vše, co není pravda, co neplatí, co je lež.Operátory
Ukázali jsme si jeden příklad x>10. Další možnosti v Pythonu jsou >=,<, <=. Pokud chceme testovat rovnost dvou čísel (nebo i řetězců nebo čehokoliv jiného) použijeme ==, pro nerovnost !=. Pravdivost nerovnosti není tak zřejmá na první pohled. Vyzkoušejte:
x=10
y=20
if x!=y:
print "Je pravda, ze x a y se nerovnaji, ze nejsou stejne."
dokonce umožňuje toto:
x=input('Zadej cislo: ')
if 0 < x < 10:
print "Zadal jsi cislo mezi 0 a 10."
else:
print "Jsi mimo!"
If u řetězců
Následující příklad je snad zřejmý:
mistoNarozeni=raw_input('Kde jsi se narodil: ')
mistoPobytu=raw_input('Kde jsi bydlis: ')
if mistoNarozeni==mistoPobytu:
print "Bydlis tam, kde jsi se narodil."
else:
print "Prestehoval jsi se."
jde ale dál. Co dělá asi toto :
x=raw_input('Zadej pismeno bez hacku a carek: ')
y=raw_input('Zadej pismeno bez hacku a carek: ')
if x < y:
print "Jak muze byt 'a' mensi nez 'b'?"
Úkol
Na rychlostní zkoušku na dálnici se dostavila bohužel jen 2 auta. První auto bylo vaše a projelo trasu délky 250m za 7s, druhé je uživatele a ujelo ji za t2 (zadá uživatel) sekund.
Zajímá mě:- Jakou rychlostí v m/s a km/h každé jelo?
- Které auto bylo rychlejší?
- Které auto překročilo rychlost 100km/h?
- O kolik km/h bylo druhé rychlejší první?
- Jak se jmenoval řidič prvního auta? :-)
Výsledky zaokrouhlujte na jedno desetinné místo pomocí funkce round(x,1).
Nápověda:
- 5/2=2 a 4/6=0, protože ... pamatuje na 1. lekci?
- A 1m/s = 3,6 km/h.
- místo:
používejte lépe:print print print
print "\n"*3