Proovime veel kõige lihtsamaid olümpiaadiülesandeid mitmete aastate tagant. Üks on selline:
Sõnastik
Kirjutada programm, mis kontrollib etteantud sõnastiku põhjal sõnade õigekirja. (Allikas, 2006. aasta koolivooru algajate ülesanne nr 3.)
Sisend. Tekstifaili sonad.sis esimesel real on sõnastiku suurus M (0 ⩽ M ⩽ 10 000) ja
järgmisel M real igaühel üks väikestest ladina tähtedest koosnev sõne pikkusega kuni 30 märki.
Sõnastiku sisu on antud tähestikulises järjekorras. Faili järgmisel real on päringute arv N
(1 ⩽ N ⩽ 10 000) ja järgmisel N real igaühel uks väikestest ladina tähtedest koosnev päringusõne
pikkusega kuni 30 märki.
Väljund. Tekstifaili sonad.val väljastada täpselt N rida, üks rida iga päringu kohta. Igale reale
väljastada sõna JAH või EI vastavalt sellele, kas päringusõne kuulub või ei kuulu sõnastikku.
Näide.
Fail: sonad.sis
3
kana
kass
koer
3
kilu
kass
Fail:sonad.val
EI
JAH
EI
Pärast võime programmi nii ümber teha, et programm küsib sõnu käsurealt ja ei arvesta/arvestab vigu suurtähtedega.
Lahendus (ilma sõnapikkuse ja failipikkuse piiranguta):
#!/usr/bin/python
# -*- coding: utf-8 -*-
sonad = [] #sõnastiku järjekorra loomine
fail=open("sonad.sis", "r") #avame sisendfaili
number=int(fail.readline()) #lugema numbri
for i in range(0, number): #vastavalt numbrile lugema arv kordi
sonad.append(fail.readline().rstrip("\n")) #ja lisama sõnastikku
#(siis olemas sonastik kõigi sõnadega)
number=int(fail.readline()) #lugema veel numbri
fh = open("sonad.val", 'w') #avama väljundfaili kirjutamiseks
for i in range(0, number): #siis uus number kordi lugema sõnu
sona = fail.readline().rstrip("\n")
vordus = False
for test in sonad : #iga loetud sõna võrdlema kõigi sõnadega sõnastikus
if sona == test :
vordus = True
if vordus :
fh.write("JAH\n") #kui saime, siis kirjutame JAH väljundfaili
else :
fh.write("EI\n") #kui ühtegi vastet ei saanud, siis kirjutama EI väljundfaili
fh.close() #sulgema väljundfaili
fail.close() #sulgema sisendfaili