Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # OPEY 2009.
- # Esimerkkiratkaisu rastitehtavaan 3.
- # Kirjoittanut Kerttu Pollari-Malmi
- # Ohjelma muuttaa tiedostosta luetut morseaakkoset tekstiksi.
- # Funktio lukee tiedostosta kirjain-morsekoodi-parit ja tallentaa ne
- # sanakirjarakenteeseen. Tiedoston nimi annetaan parametrina. Funktio
- # palauttaa tehdyn sanakirjan tai arvon None, jos tiedoston lukeminen
- # ei onnistu. Jalkimmaisessa tapauksessa olisi parempaa tyylia aiheuttaa
- # poikkeus, joka kasitellaan paaohjelmassa, mutta koska poikkeusten
- # aiheuttamista ei ole kasitelty kurssilla paljonkaan, ratkaisussa
- # virheesta on ilmoitettu paluuarvon avulla.
- def lue_kooditaulukko(kooditiedosto):
- koodihakemisto = {}
- try:
- tiedosto = open(kooditiedosto, "r")
- for rivi in tiedosto:
- rivi = rivi.rstrip()
- osat = rivi.split(":")
- if len(osat) == 2:
- merkki = osat[0]
- koodi = osat[1]
- koodihakemisto[koodi] = merkki
- koodihakemisto["---..."] = " "
- tiedosto.close()
- return koodihakemisto
- except IOError:
- return None
- # Funktio muuttaa sille ensimmaisena parametrina annetun, morsekoodeista
- # muodustuvan rivin tekstiksi. Tulkitsemissa kaytettava sanakirjarakenne
- # annetaan toisena parametrina. Funktio palauttaa tulkitun rivin tekstina.
- def tulkitse_rivi(morserivi, kooditaulukko):
- tekstirivi = ""
- morsemerkit = morserivi.split()
- for koodi in morsemerkit:
- if koodi in kooditaulukko:
- tekstirivi += kooditaulukko[koodi]
- else:
- tekstirivi += "*"
- return tekstirivi
- # Funktio kay tiedoston rivit lapi ja muuttaa ne tekstiksi. Luettavan
- # tiedoston nimi annetaan ensimmaisena parametrina ja koodit sisaltava
- # sanakirjarakenne toisena parametrina.
- def tulkitse_tiedosto(morsetiedoston_nimi, koodit):
- try:
- morsetiedosto = open(morsetiedoston_nimi, "r")
- for rivi in morsetiedosto:
- rivi = rivi.rstrip()
- teksti = tulkitse_rivi(rivi, koodit)
- print teksti
- morsetiedosto.close()
- except IOError:
- print "Virhe merkit sisaltavan tiedoston lukemisessa."
- def main():
- print "Ohjelma muuttaa tiedostosta luetut morseaakkoset tekstiksi."
- nimi1 = raw_input("Anna kooditiedoston nimi.\n")
- merkkihakemisto = lue_kooditaulukko(nimi1)
- if merkkihakemisto == None:
- print "Kooditiedoston lukeminen ei onnistunut."
- else:
- nimi2 = raw_input("Anna morsemerkkeja sisaltavan tiedoston nimi.\n")
- tulkitse_tiedosto(nimi2, merkkihakemisto)
- main()
Add Comment
Please, Sign In to add comment