Guest User

Untitled

a guest
Jun 23rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. # OPEY 2009.
  2. # Esimerkkiratkaisu rastitehtavaan 3.
  3. # Kirjoittanut Kerttu Pollari-Malmi
  4.  
  5. # Ohjelma muuttaa tiedostosta luetut morseaakkoset tekstiksi.
  6.  
  7.  
  8. # Funktio lukee tiedostosta kirjain-morsekoodi-parit ja tallentaa ne
  9. # sanakirjarakenteeseen. Tiedoston nimi annetaan parametrina. Funktio
  10. # palauttaa tehdyn sanakirjan tai arvon None, jos tiedoston lukeminen
  11. # ei onnistu. Jalkimmaisessa tapauksessa olisi parempaa tyylia aiheuttaa
  12. # poikkeus, joka kasitellaan paaohjelmassa, mutta koska poikkeusten
  13. # aiheuttamista ei ole kasitelty kurssilla paljonkaan, ratkaisussa
  14. # virheesta on ilmoitettu paluuarvon avulla.
  15.  
  16. def lue_kooditaulukko(kooditiedosto):
  17. koodihakemisto = {}
  18. try:
  19. tiedosto = open(kooditiedosto, "r")
  20. for rivi in tiedosto:
  21. rivi = rivi.rstrip()
  22. osat = rivi.split(":")
  23. if len(osat) == 2:
  24. merkki = osat[0]
  25. koodi = osat[1]
  26. koodihakemisto[koodi] = merkki
  27. koodihakemisto["---..."] = " "
  28. tiedosto.close()
  29. return koodihakemisto
  30. except IOError:
  31. return None
  32.  
  33.  
  34. # Funktio muuttaa sille ensimmaisena parametrina annetun, morsekoodeista
  35. # muodustuvan rivin tekstiksi. Tulkitsemissa kaytettava sanakirjarakenne
  36. # annetaan toisena parametrina. Funktio palauttaa tulkitun rivin tekstina.
  37.  
  38. def tulkitse_rivi(morserivi, kooditaulukko):
  39. tekstirivi = ""
  40. morsemerkit = morserivi.split()
  41. for koodi in morsemerkit:
  42. if koodi in kooditaulukko:
  43. tekstirivi += kooditaulukko[koodi]
  44. else:
  45. tekstirivi += "*"
  46. return tekstirivi
  47.  
  48.  
  49. # Funktio kay tiedoston rivit lapi ja muuttaa ne tekstiksi. Luettavan
  50. # tiedoston nimi annetaan ensimmaisena parametrina ja koodit sisaltava
  51. # sanakirjarakenne toisena parametrina.
  52.  
  53. def tulkitse_tiedosto(morsetiedoston_nimi, koodit):
  54. try:
  55. morsetiedosto = open(morsetiedoston_nimi, "r")
  56. for rivi in morsetiedosto:
  57. rivi = rivi.rstrip()
  58. teksti = tulkitse_rivi(rivi, koodit)
  59. print teksti
  60. morsetiedosto.close()
  61. except IOError:
  62. print "Virhe merkit sisaltavan tiedoston lukemisessa."
  63.  
  64.  
  65. def main():
  66. print "Ohjelma muuttaa tiedostosta luetut morseaakkoset tekstiksi."
  67. nimi1 = raw_input("Anna kooditiedoston nimi.\n")
  68. merkkihakemisto = lue_kooditaulukko(nimi1)
  69. if merkkihakemisto == None:
  70. print "Kooditiedoston lukeminen ei onnistunut."
  71. else:
  72. nimi2 = raw_input("Anna morsemerkkeja sisaltavan tiedoston nimi.\n")
  73. tulkitse_tiedosto(nimi2, merkkihakemisto)
  74.  
  75.  
  76. main()
Add Comment
Please, Sign In to add comment