Šioje pamokoje išmoksime sudėtingų sąlygų tikrinimą aprašyti kuo trumpiau/patogiau, tam Python'e naudojama:
else
reiškia „kitu atveju“ ir nurodo, ką daryti, jei „if
“ esanti sąlyga netenkinama.- loginiai jungtukai „ir“ (
test1 and test2
) bei „arba“ (test1 or test2
) leidžia sujungti dvi (ar kelias) sąlygas. - neigimas --
not test1
-- irgi praverčia :)
else
Programuojant dažnai pasitaiko užduotys, kuriose reikia skirtingai elgtis, priklausomai nuo to ar sąlyga tenkinama (True), ar ne (False). 6 temos užduotis prašė atspausdinti vienokį tekstą, jei amžius (age
) yra mažesnis už 0, ir kitokį - jeigu amžius yra ne mažesnis už 0; maždaug taip:
if age >= 0: print('Tu jau esi gimęs!') if age < 0: print('Dar negimei, arba tu - keliautojas laiku!')Tą galima užrašyti truputį patogiau/trumpiau, naudojant
else
.
Apibendrintas else
naudojimo atvejis:
if «sąlyga»: «veiksmai, kai True» # atitrauktas blokas else: «veiksmai, kai False» # kitas atitrauktas blokas
else
filosofija
else
leidžia mums lengviau užrašyti bei perskaityti programą. Palyginkime:
A variantas
if age < 18: print('Dar negali laikyti teisių') else: print('Eime pavairuoti!') |
B variantas
if age < 18: print('Dar negali laikyti teisių') if age >= 18: print('Eime pavairuoti!') |
Abu daro tą patį, tačiau dauguma programuotojų sutaria, kad A variantas yra geresnis. Jame lengviau keisti kintamąjį (nes jis naudojamas tik vienoje sąlygoje), o užrašymą galima greičiau perskaityti.
Python turi standartinę funkciją abs(x) (reiškia „absoliuti reikšmė“ - be ženklo), kuri apskaičiuoja skaičiaus modulį . Dabar vertinimo sistema neleis naudoti šios funkcijos, tačiau drąsiai naudokite ją vėliau. |
elif
Python turi dar vieną if
„draugą“ - elif
. Jis leidžia tikrinti kelias sąlygas iš eilės, kol ras (prieis) tenkinamą sąlygą. Paprastas pvz.:
if «test1»: «actions1» # vykdys, jei test1 bus True elif «test2»: «actions2» # vykdys, jei test1 bus False, o test2 - TrueTurbūt atspėjote, jog
elif
yra "else if" trumpinys. Jį naudot patogiau negu "else if" kombinaciją, nes reikia mažiau rašymo ir atitraukimų. Dar šauniau yra tai, kad galime naudoti bet kokį skaičių elif sąlygų iš eilės, ir net pridėti else
atvejį gale. Pvz.:
if «test1»: «actions1» # vykdys, kai test1 yra True elif «test2»: «actions2» # vykdys, kai test1 yra False, o test2 - True elif «test3»: «actions3» # vykdys, kai test1 ir test2 yra False, o test3 - True else: «actions4» # vykdys kitais atvejais (kai visi testai buvo False)
Štai pavyzdys, kaip ciklo viduje atrodo elif
sąlyga. Ar galite atspėti, ką atspausdins?
Loginiai veiksmai: and
, or
, not
Veiksmai "and
", "or
" bei "not
" reiškia tą patį, kaip ir anglų kalboje:
A and B
bus teisinga jei abi sąlygos --A
irB --
yra teisingos. O klaidingas - jei bent viena iš sąlygų yra False.
Pvz.: Jei "yra vasara" ir "aš esu pajūry", tai "pasimaudysiu jūroj" (reikia abiejų sąlygų).A or B
bus teisinga jei bent viena sąlyga --A
arbaB
-- yra teisinga. O klaidingas - jei abi sąlygos yra False.
Pvz.: Jei "dega lempa" arba "dabar diena", tai "yra šviesu" (užtenka bent vienos sąlygos).not A
yra teisinga (True), kaiA
-- False (ir atvirkščiai).
Pvz.: Jei ne "šiandien", tai "rytoj" :)
Štai programa, kurioje pademonstruoti visi galimi reikšmių atvejai - ją įvykdę, pamatysite taip vadinamą teisingumo lentelę:
Štai pavyzdys, kuriame naudojant and
, yra patikrinama, ar skaičius gali būti raidės numeris abėcėlėje ir jis paverčiamas atitinkama raide (pagal 7a pamoką - ord(..) grąžina raidės numerį kodų lentelėje, o chr(..) - raidę pagal jos kodą).
A or B
? Kaip ir aritmetikoje, taip ir logikoje -- skirtingos išraiškos gali reikšti tą patį -- turėti tą pačią reikšmių lentelę.not (A or B)
is only true when both A
and B
are false. Also, note that (not A) and (not B)
is only true if both not A
and not B
are true, i.e. if both A
and B
are false. So we have the following equality:(not A) and (not B) = not (A or B)Put a
not
around both sides, so we deducenot ((not A) and (not B)) = not (not (A or B))and observe that
not(not X))
always equals X
, sonot ((not A) and (not B)) = not (not (A or B)) = A or BThis way of rewriting a boolean expression is one of De Morgan's laws.
Operacijų tvarka
Loginiai veiksmai turi tą pačia operacijų tvarką kaip ir matematikoje. Tvarka yra NAO: 1) not , 2) and, 3) or
Tai atitinka aritmetinius veiksmus ir jų eiliškumą: 1) neigimas (minusas), 2) daugyba, 3) sudėtis
Pavyzdžiui,
not x or y and z
reiškia (not x) or (y and z)
analogiškai matematikoje
- x + y * z
reiškia (-x) + (y*z)
Pamoką užbaigsime trumpu klausimu.
A or ((not B) and C)substituting the values, we have
False or ((not True) and True)and now simplifying one step at a time gives
False or ((not True) and True)
= False or (False and True)
= False or False
= False