Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
< eelmine | 2. nädala sisukord | järgmine > |
2.2 Tingimuslause tingimuslause sees
Tingimuslause tingimuslause sees
Valikulausete puhul on kesksel kohal tingimus, mille kehtimisest sõltub, millise haruga edasi minnakse. Tingimus esitatakse tõeväärtustüüpi avaldisena, näiteks sisestatud_pin == "1234"
. Avaldis võib olla ka märksa keerulisem. Mõningaid selliseid vaatame käesoleva nädala järgmistes materjalides.
Praegu aga jätkame varasemat programmi, kus küsitakse PIN-koodi ja õige koodi korral "sisenetakse" pangaautomaati. Mis aga saab edasi? Tundub, et programm peab edasi ka valikutega minema. Teeme nüüd nii, et pangaautomaati sisenedes näidatakse, mitu eurot pangakontol on, ning küsitakse, mitu eurot soovitakse välja võtta. Kui kasutaja soovib välja võtta rohkem raha, kui on pangakontol, siis teavitatakse kasutajat, et see pole võimalik.
Eelnevalt oli meil olemas pangaautomaati sisenemise programm:
sisestatud_pin = input("Sisesta PIN-kood: ") if sisestatud_pin == "1234": print("Sisenesid pangaautomaati!") else: print("Vale parool! Enesehävitusrežiim aktiveeritud: 3 ... 2 ... 1 ....")
Esiteks võiks programmi alguses kasutusele võtta muutuja, mille väärtus näitab, kui palju pangakontol raha on. Näiteks teeme nii, et algselt on kasutaja pangakontol 100 eurot:
kontoseis = 100
Nüüd teeme programmiosa, mis töötab siis, kui kasutaja on automaati sisse saanud. Selles osas väljastatakse ekraanile pangakontol olev summa ning küsitakse, mitu eurot soovitakse välja võtta. Küsitud väljavõetava raha teisendame seekord koheselt täisarvutüüpi (int
) väärtuseks:
print("Sisenesid pangaautomaati! Pangakontol on " + str(kontoseis) + " eurot.") print("Sisesta, mitu eurot soovid välja võtta:") soovitud_raha = int(input())
Seejärel oleks vaja kontrollida, et väljavõetav rahasumma oleks väiksem või võrdne kontol olevast. Kui nii on, siis võetakse vastav summa kontolt maha. Kui ei ole, siis väljastatakse vastav veateade:
if soovitud_raha <= kontoseis: kontoseis = kontoseis - soovitud_raha print("Välja võetud: " + str(soovitud_raha) + " eurot. Ärge unustage raha masinast ära võtta!") else: print("Kontol ei ole nii palju raha!")
Juba eelmisel nädalal oli näide, muutujale anti väärtuse tehtega, milles kasutame sedasama muutujat ennast (siin kontoseis = kontoseis - soovitud_raha
). Muutuja uue väärtuse arvutamine vana põhjal on isegi nii levinud, et kasutusel on tehtemärgid (nt +=
, -=
, *=
, /=
), mis võimaldavad seda lühemalt kirja panna.
Nii saaks asendada vastava rea eeltoodud programmis järgmisega:
kontoseis -= soovitud_raha
Lähme nüüd tagasi pangaautomaadi programmi juurde. Kõige lõpuks võime veel ekraanile väljastada, kui palju raha pangakontole jäi.
print("Pangakontol on nüüd: " + str(kontoseis) + " eurot.")
Kui nüüd lisada need read algse programmi if
-osa sisse, siis saame kokkuvõttes järgneva programmi. Märgiga #
tähistatakse programmis kommentaare, mis on inimeste jaoks ja mida Python ei arvesta. Kõik, mis samal real #
märgile järgneb, on kommentaar.
kontoseis = 100 sisestatud_pin = input("Sisesta PIN-kood: ") if sisestatud_pin == "1234": print("Sisenesid pangaautomaati! Pangakontol on " + str(kontoseis) + " eurot.") print("Sisesta, mitu eurot soovid välja võtta:") soovitud_raha = int(input()) if soovitud_raha <= kontoseis: kontoseis = kontoseis - soovitud_raha #kontoseisu väärtus väheneb print("Raha välja võetud: " + str(soovitud_raha) + " eurot.") else: print("Kontol ei ole nii palju raha!") print("Pangakontol on järgi: " + str(kontoseis) + " eurot.") else: print("Vale parool! Enesehävitusrežiim aktiveeritud: 3 ... 2 ... 1 ....")
Palun mõelge selle programmi loogika rahulikult läbi ning seejärel katsetage selle tööd.
Ülesanne
< eelmine | 2. nädala sisukord | järgmine > |