8. Tingimus
Elus puutume pidevalt kokku mingisugust otsustust nõudvate olukordadega: kas minna kooli jalgsi või jalgrattaga, võtta kaasa vihmavari, keep või jätta mõlemad koju. Ka programmi täitmine on sageli seotud otsustega: kui saadud punktide arv on suurem kui minimaalselt vajalik, antakse kasutajale positiivne hinne; kui sisestatud arv on null, siis ei lubata sellega jagada jne. Programmeerimises kasutatakse selliste valikute puhul tingimuslauset e. if-lauset. Tingimusena antakse ette avaldis, millel on tõeväärtus e. mille kohta saab öelda, kas ta on tõene või väär.
Avaldistes kasutatakse tüüpiliselt järgmisi operaatoreid:
- == on võrdne (kaks võrdusmärki järjest, ainult üks võrdusmärk oleks omistamine!)
- < on väiksem
- <= on väiksem või võrdne
- > on suurem
- >= on suurem või võrdne
- != on mittevõrdne
Allolevas näites kontrollitakse, kas muutuja "sisestatudparool" väärtus on võrdne muutuja "parool" väärtusega. Kui see on tõene, väljastatakse vastav teade, vastasel juhul ei tehta midagi.
if sisestatudparool == parool: print("Sisestatud parool on õige!")
Järgnevas koodilõigus kontrollitakse, kas muutuja "arv" väärtus on
suurem kui 0. if arv > 0: print("Arv on nullist suurem.")
NB! Käsud, mis avaldise tõesuse puhul täidetakse, võivad asuda mitmel real, kuid peavad kindlasti olema ühesuguse taandega (tüüpiliselt kasutatakse kas tabulatsiooniklahvi vajutust või nelja tühikut). Kui kasutada ridade ees erinevat taanet (näiteks segamini tabulatsiooni ja tühikuid), töötab programm valesti või antakse veateade.
Kui soovitakse määrata ka see, mida tehakse, kui avaldis pole tõene, tuleb lisada else-osa:
if sisestatudparool == parool: print("Sisestatud parool on õige!") else: print("Sisestatud parool on vale!")
Mõnikord tahetakse kontrollida mitut erinevat võimalust (näiteks seda, kas arv on väiksem nullist, suurem nullist või null), sel juhul lisandub veel elif-osa (lühend sõnadest "else if"):
if arv > 0: print("Arv on suurem kui 0") elif arv < 0: print("Arv on väiksem kui 0") else: print("Arv on 0")
Ühes if-lauses võib kontrollida ka mitut tingimust korraga, selleks ühendatakse avaldised võtmesõnadega "and" või "or". Esimene tähendab, et tõesuse jaoks peavad kehtima kõik avaldised, "or" seda, et tõesuse jaoks peab kehtima vähemalt üks avaldis.
if vanus > 10 and vanus < 20: print("Vanus on suurem kui kümme ja väiksem kui 20")
if vanus < 10 or vanus > 20: print("Vanus on väiksem kui kümme või suurem kui 20")
Üldiselt
Lihtsaim tingimuslause:
if <avaldis>: <käsk, mis täidetakse, kui avaldis on tõene> <käsk, mis täidetakse, kui avaldis on tõene>
Tingimuslause koos määratlusega, mis juhtub, kui tingimus pole tõene:
if <avaldis>: <käsud, mis täidetakse, kui avaldis on tõene> else: <käsud, mis täidetakse, kui avaldis on väär>
Tingimuslause, kus kontrollitakse rohkem kui üht tingimust:
if <avaldis_1>: <käsud, mis täidetakse, kui avaldis_1 on tõene> elif <avaldis_2>: <käsud, mis täidetakse, kui avaldis 1 on väär, aga avaldis_2 on tõene> else: <käsud, mis täidetakse, kui mõlemad avaldised on väärad>
Mitme avaldise kasutamine tingimuslauses:
if <tingimus_1> and <tingimus_1>: <käsud, mis täidetakse, kui mõlevad tingimused on tõesed>
if <tingimus_1> or <tingimus_1>: <käsud, mis täidetakse, kui vähemalt üks tingimus on tõene>
Näidisülesanne
Ülesanne. Tee programm, mis küsib kasutajalt sisenemiseks parooli ja kontrollib selle õigsust. Programm võiks õige parooli sisestamisel öelda: "Sisenesid pangaautomaati!", vale parooli sisestamisel aga hoopis: "Vale parool! Enesehävitusrežiim aktiveeritud: 3...2...1...". Lahendus. Kõigepealt võtame kasutusele muutuja, kus hoiame küsitavat parooli:
parool = "1234"
Seejärel tuleb kasutajale öelda, et ootame temalt parooli sisestamist:
print("Sisesta parool:")
Nüüd on vaja kasutaja poolt sisestatu kätte saada ja seejärel seda kasutada. Kättesaamiseks on sobiv funktsioon "input()". Selleks, et sisestatud tekstiga saaks hiljem midagi peale hakata, omistame selle väärtuse muutujale "sisestatudparool".
sisestatudparool = input()
Tegelikult saaks nende kahe rea asemel ka ühte kasutada, sest funktsioonile "input" võib argumendina ette anda väljastatava teksti.
sisestatudparool = input("Sisesta parool: ")
Nüüd jääb üle vaid kontrollida, kas parool on õige või ei ole. Selleks saab kasutada valikulauset:
if sisestatudparool == parool: print("Sisenesid pangaautomaati!")
Ülaltoodud programm juba kuidagi töötab, aga mitte siis, kui parool on vale. Valikulausel võib olla else-osa, millega määratakse, mis juhtub siis, kui tingimus ei ole täidetud (vastava avaldise väärtus on False). Hetkel lisame järgmise lõigu:
else: print("Vale parool! Enesehävitusrežiim aktiveeritud: 3 … 2 … 1 ....")
Kokku saime sellise koodi:
parool = "1234" sisestatudparool = input("Sisesta parool: ") if sisestatudparool == parool: print("Sisenesid pangaautomaati!") else: print("Vale parool! Enesehävitusrežiim aktiveeritud: 3 … 2 … 1 ....")
Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/