From 29bc34810cb1d1fbd208f6b5f2dad73188ca7f12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Mo=C5=BEina?= Zdaj pa povejmo nekaj splošnejšega o pogojih. Kakšni vse so lahko? Najprej,
+ pogoj je izraz. Torej nekaj, kar se da izračunati (po naši garažni
+ definiciji izraza). Doslej so bili vsi naši izrazi nekako številski,
+ aritmetični: v njih so nastopala števila in le-ta smo seštevali, množili,
+ odštevali in kar se še takega dela s števili. Pogoji pa so logični izrazi.
+ (V resnici se "logičnost" in "številskost" lahko poljubno prepletata, a to
+ bomo mimogrede odkrili sproti.) Rezultat logičnega izraza je logična vrednost. Logične vrednosti niso števila
+ (torej niso S števili že znamo računati. Z nizi tudi malo. Kako pa računamo z logičnimi
+ vrednostmi? Menda jih ne moremo kar tako seštevati in odštevati? Za zdaj se delajmo, da ne. Kasneje bomo videli, da zna Python z logičnimi
+ izrazi početi še to in ono zanimivo reč, ki pa za začetnika niso tako
+ pomembne. Za logične izraze so nam na voljo trije operatorji: ( Operator Da bo reč lažje razumljiva, jo potrenirajmo na prav tem izrazu, vendar tako,
+ da namesto Operatorja > in < pričakujeta na levi in desni neke reči, ki jih je
+ mogoče primerjati; zadovoljna nista le s števili, temveč tudi z, recimo,
+ nizi (primerjala jih bosta po abecedi), ne moreta pa primerjati števila z
+ nizom. Njun rezultat je logična vrednost. Za "večje ali enako" in "manjše
+ ali enako" uporabimo Če želimo preveriti enakost dveh števil (ali, v splošnem, enakost dveh
+ stvari), uporabimo dvojni enačaj, Pogoji
+
+int
ali float
) in niso nizi, torej so
+ nekaj četrtega. Podatkovni tip, ki hrani logične vrednosti, se imenuje
+ bool
(iz Boolean, po slovensko Booleov). Medtem ko je
+ različnih števil (int
, float
) kar veliko,
+ ima tip bool
lahko le eno od dveh
+ vrednosti, True
ali False
. Tudi True
+ in False
rezervirani besedi. or
,
+ and
in not
.
+
+
+>>> True and True
+True
+>>> True and False
+False
+>>> False or True
+True
+>>> not False
+True
+>>> False or not False
+True
+
+
+and
, or
in not
so rezervirane besede.not
ima prednost pred and
,
+ and
pa pred or
. Spet si lahko pomagamo z
+ oklepaji: a or b and c
pomeni isto kot
+ a or (b and c)
in bo resničen (True
), če je resničen
+ a
ali pa sta resnična b
in c
. Izraz
+ (a or b) and c
pa bo resničen, če sta resnična a
+ ali b
(ali oba), poleg tega pa nujno še c
. Pri
+ tem seveda predpostavljamo, da a
, b
in
+ c
vsebujejo logične vrednosti.a
, b
in c
oziroma namesto
+ "golih" True
in False
pišemo bolj "konkretne"
+ izraze.
+>>> 352 > 0
+True
+>>> 5 < 3
+False
+>>> 352 > 0 or 5 < 3
+True
+>>> 352 > 0 or 5 > 3
+True
+>>> 352 > 0 and 5 > 3
+True
+>>> 352 > 0 and 5 < 3
+False
+>>> 352 > 0 and not 5 < 3
+True
+>>> 10 > 8 or 352 > 0 and 5 < 3
+True
+>>> 10 > 8 or (352 > 0 and 5 < 3)
+True
+>>> (10 > 8 or 352 > 0) and 5 < 3
+False
+>>> (10 > 8 or 352 > 0) and not 5 < 3
+True
+
+
+>=
in <=
.==
. Enojni enačaj je dobil
+ svojo zadolžitev prejšnjo uro, namenjen je namreč prirejanju. Ali sta dve
+ stvari različni, preverimo z !=
.>>> 1 + 1 == 2
+True
+>>> 1 + 1 != 2
+False
+
Ne zamenjujte dvojnih in enojnih enačajev. Če pomotoma napišemo (a to se nam + bo rekdo zgodilo),
+a == 1 + 1+
s tem nismo priredili a
-ju dvojke, temveč smo le preverili, ali je
+ enak 2. Pogostejša napaka pa bo
if a = 1: + print("Vrednost a je ena")+
Ta program pa je sintaktično nepravilen, saj Python za if
+pričakuje pogoj, mi pa smo napisali prireditveni stavek.
Zdaj pa Pythonova posebnost, ki je v drugih jezikih ne bo: operatorje smemo nizati. Izraz
+ 10 < T < 20
je resničen, če je T
med 10 in
+ 20. Izraz 10 < T1 < T2 < 20
je resničen, če sta
+ T1
in T2
med 10 in 20, pri čemer je
+ T1
manjši od T2
. Izraz
+ T1 < 10 < T2
je resničen, če je T1
manjši
+ od 10, T2
pa večji od deset.
+ 10 < T1 == T2 < 20
je resničen, če sta
+ T1
in T2
enaka in sta nekje med 10 in 20.
Če se torej končno vrnemo k suhcem in debeluhom: če bi se hoteli + skoncentrirati le na te, ki so ravno pravšnji, bi lahko napisali, + recimo
+ +if bmi > 18.5 and bmi < 25: + print("Čestitamo, ravno pravšnji ste.")+ +
Če kdo napiše
+ +if (bmi > 18.5) and (bmi < 25): + print("Čestitamo, ravno pravšnji ste.")+ +
ali celo
+ +if ((bmi > 18.5) and (bmi < 25)): + print("Čestitamo, ravno pravšnji ste.")+ +
Ga bomo čudno gledali (((kdor hoče oklepaje, naj gre raje programirat v +Lisp))). Prav po Pythonovsko pa se reče:
+ +if 18.5 < bmi < 25: + print("Čestitamo, ravno pravšnji ste.")+ + + + -- cgit v1.2.1