Sisend ja väljund

Sisend- ja väljundlaused (input/output) on ettenähtud (nagu nimigi ütleb) programmile andmete edastamiseks ja tulemuste väljatrükkimiseks (ekraanile). Seda selleks, et programm oleks interaktiivne, et kasutaja saaks arvutiga programmi läbi suhelda. Lisaks sellele on programmidel teinekord vaja suhelda ka failidega – andmeid lugeda või kirjutada. Piirdume esialgu sisendiga klaviatuurilt ja väljundiga ekraanile, mida tavatsetakse kutsuda standardsisendiks ja standardväljundiks. Nii sisend kui väljund tehakse Python-programmis sisefunktsioonide (built-in function) abil.

Alljärgnevas videos räägime, kuidas saame teksti ekraanile ning kuidas saame arvutile anda oma sisendi.

Funktsioon print() andmete väljastuseks

Funktsiooniga print() tutvusime põgusalt juba eelmises peatükis, kus kirjutasime oma esimese programmi Hello World!.

Väljundi trükkimiseks ekraanile kasutatakse sisefunktsiooni print(). Väljatrükitav informatsioon tuleb paigutada sõna print järel sulgudesse. Väljastada saab tekste (stringe ehk sõnesid) ja muutujate väärtuseid. Lisada saab ka reavahetusi ja vormindust. Väljastatav tekst pannakse kas jutumärkide või ülakomade vahele (sel teel tekib stringkonstant ja ta on eristatav muutuja nimest).

# väljastatakse tekst Tere kool! jutumärkideta
 print("Tere kool!")
 # sõnad Tere ja kool! On eraldi ridadel (vahele on väljastatud reavahetus)
 print("Tere\nkool!")

Sümbol "\n" tähendab reavahetust (new line). Ükskõik kuhu väljatrükilauses see lisatakse, on tulemuseks reavahetus ekraanile jõudvas tekstis. Sellest jätame meelde, et reavahetus on samamoodi trükitav märk, nagu suvaline täht või number. Ilma seda eraldi märkimata lisatakse reavahetus automaatselt väljundlause lõppu.

Väljundusse tühja rea saamiseks sobib ka kirjutada:

print()

Sisendi lugemine standardsisendist (input)

Oleme juba tutvunud funktsiooniga print(), mis väljastab midagi ekraanile. Sisendi lugemise jaoks on funktsioon input().

Programmi täitmisel, kui arvuti näeb käsku input(), siis ta jääb ootama, kuni kasutaja vajutab Enter klahvi. Enne sisestamist võib kasutaja kirjutada midagi (ta näeb seda konsoolis). Pärast Enter klahvi vajutamist teeb funktsioon kasutaja sisendist sõne. Kui kasutaja ei sisestanud mitte midagi, siis see sõne on tühi ("") (täpsemalt tähendab see, et input() tagastab sõne (string) andmetüüpi väärtuse, mis koosneb kasutaja poolt sisestatud sümbolitest). Selleks, et seda sõne kuidagi kasutada, tuleb saadud väärtus muutujasse panna või teisele funktsioonile argumendina anda.

Vaata alljärgnevaid näiteid sisendi väljastamise kohta.

s = input()
print(s)

Sama kood, kuid lühemalt:

print(input())

Need kaks koodilõiku teevad sama asja: väljastavad ekraanile kasutaja sisendi. Esimene variant salvestab sisendi muutujasse s, teine variant annab väärtuse otseselt print funktsioonile. Esimene variant sobib siis, kui on vaja enne printimist sisendit kuidagi muuta või kontrollida. Kui seda ei ole vaja teha, võiks kasutada teist, lühemat varianti.

input() funktsioon võib võtta ka sisendiks ühe argumendi. Python'i dokumentatsioonis nimetatakse seda argumenti prompt'iks. Prompt on mingi sõne, mis väljastatakse ekraanile, enne kui hakatakse sisendit ootama. See on põhimõtteliselt sama kui kasutada funktsioone print() ja input() samal ajal.

NB! Peale sõne väljastamist läheb print() uuele reale, input() mitte.

print(input("Sisestage midagi: "))

Töö käik on järgnev:

1. Ekraanile ilmub sõnum "Sisestage midagi: ".
2. Arvuti hakkab ootama, et kasutaja vajutaks *Enter* klahvi.
3. Kasutaja sisestab midagi.
(See näeb välja niimoodi: 'Sisestage midagi: abc')
4. Kasutaja vajutab *Enter*.
5. Ekraanile ilmub kasutaja poolt sisestatud sõne.

Seda koodi on võimalik ka kirjutada niimoodi:

print("Sisestage midagi: ", end="")
print(input())

Rakendused

Hello world. Version: Advanced.

See kood küsib kasutaja nime ja väljastab ekraanile sõne kujul Hello, *name*!.

NB! Kui kasutaja ei sisesta midagi ja lihtsalt vajutab 'Enter', siis ekraanile ilmub Hello, !.

def main():
    name = input("What is your name? ")
    print("Hello, " + name + "!")

if __name__ == '__main__':
    main()

Kahe täisarvu arvu summa kalkulaator

Siin tuleb meeles pidada, et kui kasutaja sisestab 7, siis arvuti jaoks on see sõne, mitte arv. ESelleks, et edaspidi seda arvuna kasutada, tuleb see arvuks muuta. Selleks kasutatakse funktsioone int() või float() sõltuvalt sellest, mis andmetüüpi arv see on (täisarv - int, murdarv - float). Funktsioon str() toimib vastupidi ning muudab kõik sõneks.

def main():
    a = int(input("Number a: "))
    b = int(input("Number b: "))
    c = a + b
    print("a" + " + " + "b = " + str(c))

if __name__ == '__main__':
    main()

Natuke lihtsamalt:

def main():
    a = int(input("Number a: "))
    b = int(input("Number b: "))
    print("a" + " + " + "b = " + str(a + b))

if __name__ == '__main__':
    main()

Siin on a* ja b mingid arvud, mille väärtused sõltuvad kasutaja sisendist (kui kasutaja sisestab midagi peale arvude, siib tekib viga - erind ValueError).

Programmi töö näide:

(Numbrid 10 ja 12 on kasutaja poolt sisestatud)

Number a: 10
Number b: 12
a + b = 22