Iki šiol mūsų programos buvo vykdomos nuosekliai - nepraleidžiant nei vieno veiksmo. Štai pavyzdys ("pereikite" programą pažingsniui, naudodami mygtukus ar klaviatūros rodykles).
Šioje pamokoje išmoksime kaip naudoti sąlygos sakinį, kuris vykdo kodą tik esant nurodytoms sąlygoms. Pvz., ši programa atspausdins pranešimą apie pensiją tik, jei asmuo turės pakankamai metų. Mes sujungiame: if age > 65:
(reiškiantį, "jei age
daugiau nei 65") ir print('Pensija yra gerai!')
. Pabandykite:
Pastebėkime, atspausdinimo teiginys buvo praleistas, nes amžius age
buvo tik 31! Kas atsitiks, jei birthYear
pakeisime į 1928?
Ar pastebėjote skirtumą? Apatinė versija (kai kintamuoju age
gaunasi 85) atspausdina dvi eilutes, ir vykdo visą programą.
Naudodami „if“ sakinį turime papildomai nuo krašto atitraukti (angl. „indent“) nuo jo priklausančias eilutes (kaip ką tik buvusiame pvz.). Atitraukimas gali talpinti daugiau teiginių - tada kiekviena eilute turi būti atitraukta.
- pabandykite paleisti konsolę arba programos sekimą su 1982 gimimo metais. Abi atitrauktos eilutės bus praleistos.
Kitame uždavinyje reikės parašyti programą, naudojant palyginimo sąlygas. Jau matėme "if x > y:
". Jums taip pat gali praversti:
if x < y:
reiškia "jei x yra mažesnis už y"if x >= y:
reiškia "jei x yra didesnis ar lygus y"if x <= y:
reiškia "jei x yra mažesnis ar lygus y"
Sąlygos sakinio struktūra
- Antraštė (pirmoje eilutėje) turi tris dalis: žodį „
if
“,«sąlygą»
ir dvitaškį „:
”
if «sąlyga»:
- Priklausantys veiksmai - atitrauktos eilutės. Atitraukimo tarpų kiekis gali būti bet koks, tačiau visoms eilutėms vienodas - kitaip bus klaida. Kai papildomas atitraukimas baigiasi, Python supranta, kad baigėsi “if” sakinio veiksmai.
Vienodai atitrauktų (sulygiuotų) veiksmų grupė vadinama bloku. Blokai naudojami ir kitose vietose, pavyzdžiui, kartojimo sakiniuose (cikluose) ir apibrėžiant/kuriant naujas funkcijas (apie tai - savo laiku :). |
Kitas uždavinys sudarytas iš 4 dalių - jas galite atlikti bet kokia tvarka.
Loginės reikšmės True, False
ir duomenų tipas bool
Iki šiol sąlygoje
matėme skaičių palyginimą x > y
, kuris gali būti įvertintas „taip
“ arba „ne
“ (sąlyga teisinga arba klaidinga). Tai yra loginės reikšmės (angliškai vadinamos „Boolean“ - matematiko George Boole (Būlio) garbei). Python’e tai atitinka bool
duomenų tipas, kuris turi tik dvi galimas reikšmes: True
ir False
.
Svarbu: Python'e True
ir False
turi būt rašomos iš didžiosios raidės, nes kitaip bus klaida..
Daugiau palyginimo veiksmų
Turbūt pamenate, kad veiksmai >
, <
, <=
, ir >=
palygina du skaičius ir grąžina loginę reikšmę. Yra dar pora palyginimo veiksmų:
x == y
- „ar lygu?“ - grąžinaTrue
jeix
iry
yra lygūsx != y
- „ar nelygu?“ - grąžinaTrue
jeix
iry
nėra lygūs==
ir!=
tinka ne tik skaičiams, bet ir kitų tipų duomenims.
Kodėl naudojami du lygyės ženklai == ? Vienas ženklas = reiškia priskyrimą, todėl nebetinka - palyginimo metu kompiuteris atlieka kitokį veiksmą. Matematikoje abiem atvejais naudojamas = , todėl veiksmų = ir == painiojimas būna klaidų priežastimi.) |
Štai pavyzdys, kurį atlikdami turėsite panaudoti vieną iš naujų palyginimo veiksmų.
Mes ką tik susipažinome su bloko sąvoka (reiškiančią vienodai sulygiuotų eilučių grupę). Programos blokai gali talpinti kitus blokus - tada jie vadinami įdėtiniais (angl. „nested“) blokais:
if password=='openSesame': print('User logged on.') if hour>17: print('Good evening!') print('Enter a command:')Čia pirmo lygmens bloke yra 4 eilutės, o antro lygmens - viena (viduje pirmojo bloko):
if password=='openSesame':print('User logged on.')
if hour>17:print('Good evening!')print('Enter a command:')
if
“ sakiniaihour>17
yra netiesa (vidinis - raudonas - blokas yra praleidžiamas), eilutė print('Enter a command:')
, bus vis tiek atliekama.Dabar turite panaudoti įdėtinius blokus, kurie leis sudėtingesnį amžiaus skaičiavimą.
Vėliau, 9 pamokoje, sužinosite, kaip tikrinti kelis sąlygos variantus naudojant else
(„kitu atveju“) ir elif
(„else if“), bei apie loginius veiksmus "and", "or", "not". Kolkas, eikime į kitą pamoką.