7. Sisend ja väljund
Arvutiprogrammide puhul on enamasti vajalik kasutajaga suhtlemine: töö tulemuste väljatrükk ekraanile, kasutajalt vajalike andmete küsimine vms. Koostades programmi kalkulaatori jaoks me ju eeldame, et kasutaja saab sisestada arve ning näha hiljem arvutamise tulemust.
Sisend
Andmete sisestamiseks klaviatuurilt kasutatakse funktsiooni input(). Sulgudesse võib kirjutada teksti, mis aitaks kasutajat (nagu varem nägime, kasutatakse sõnede puhul jutumärke).
input("Palun sisestage oma nimi: ")
Selline küsimine pole otstarbekas, kuna kasutaja poolt sisestatud teksti ei säilitata edaspidiseks tööks. Seepärast tuleks lisada käsule ka omistamine.
nimi = input("Palun sisestage oma nimi: ")
Nii saab muutuja endale väärtuseks kasutajalt saadud teksti.
Funktsiooniga input saadud sisend on alati sõne (string) tüüpi. Selleks, et küsitud arvu hiljem arvuna käsitleda, tuleb teha tüübiteisendus:
vanus = input("Sisestage oma vanus:") vanusarvuna = int(vanus)
Tüübiteisenduse võib teha ka koos sisendi küsimisega:
vanus = int(input("Sisestage oma vanus:"))
Võimalik, et kasutaja ei sisestanud andmeid korrektselt (näiteks trükkis vanuse tekstina "viisteist"), sel juhul antakse kasutajale veateade. Veateadete ennetamiseks tuleb ühest küljest kasutajale rohkem infot anda (näit. "Sisestage oma vanus arvuna:"), teisest küljest püüda enne operatsioonide tegemist kontrollida, kas sisestatud andmed sobivad.
Väljund
Info väljastamiseks ekraanil kasutatakse funktsiooni print(), kus sulgudesse lisatakse väljastatav tekst või muutujad, mille väärtusi soovitakse väljastada.
print("Tere") # Väljund: Tere nimi = "Siim" print(nimi) # Väljund: Siim
Kui väljund koosneb mitmest osast (näiteks kombineeritakse erinevaid tekste ja muutujate väärtusi), kasutatakse ühendamiseks kas koma või pluss-märki.
print("Tere,", nimi) # Väljund: Tere, Siim print("Tere, " + nimi) # Väljund: Tere, Siim
Koma kasutamisel peab arvestama, et programm lisab osade vahele ka tühiku, pluss-märgi puhul seda ei tehta (tähelepanu tühikul enne punkti esimese näite puhul):
print("Tere,", nimi, ". Ilusat päeva.") # Tulemus Tere, Siim . Ilusat päeva. print("Tere," + nimi + ". Ilusat päeva.") # Tulemus Tere, Siim. Ilusat päeva.
Nagu näha, vahetatakse pärast andmete väljastamist ka rida. Selleks, et reavahetust ei tehtaks, võib lisada sulgudesse viimaseks argumendiks end="":
print("Tere,", end="") print(nimi)
Sellisel kujul trükitakse nii sõna "Tere" kui ka nimi ühte ritta. Lisaks otsesele suhtlusele võib programm saada sisendinfot ka failidest või salvestada tulemusi failidesse, sellest tuleb juttu edasipidi.
Näidisülesanne
Ülesanne. Koosta programm, mis küsib kasutajalt kaks täisarvu, leiab nende summa ja tagastab tulemuse. Lahendus. Kõigepealt küsime kasutajalt kaks täisarvu ning omistame nende väärtused muutujatele a ja b:
a = input("Sisestage esimene liidetav: ") b = input("Sisestage teine liidetav: ")
Teeme vajaliku arvutuse. Kuna kasutaja poolt sisestatu on Pythoni jaoks sõne e. tekst (ka siis, kui see sisaldab ainult numbreid), aga arvutusi saame teha arvudega, peame sisendist saadud väärtused teisendama täisarvudeks (funktsioon int()).
summa = int(a) + int(b)
Väljastame tulemuse
print(a, "+", b, "=", summa)
Muidugi võiksime summa leida ka otse väljundis:
print(a, "+", b, "=", int(a) + int(b))
Sisendi teisendamise (kui me tulevikus ei taha kontrollida, kas kasutaja ikka tõepoolest sisestas täisarvu) võime lisada ka otse sisendi juurde. Sel juhul näeks programm välja näiteks selline:
a = int(input("Sisestage esimene liidetav: ")) b = int(input("Sisestage teine liidetav: ")) print(a, "+", b, "=", a + b)
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/