# Programfilen best?r av 3 hoveddeler # 1 definisjon av ei fransk-engelsk ordbok (ca 1000 linjer) # 2 noen funksjondefinisjoner for ? gj?re oppslag i ordboka # 3 Et hovedprogram som oversetter fra fra fransk til engelsk eller omvendt ########################################################### # Del 1 # Lager ei tom ordbok: from ordsamlinger import lagOrdlister, lagOrdbok1001ord franskTilEngelsk = {} ############################################################################# # Del 2 funksjondefinisjoner # Funksjon for direkte oppslag i ordboka, dvs fra fransk til engelsk: def oversettFraFranskTilEngelsk(ord): return ordbok[ord] # sender tilbake oppslag i ordboka # Funksjon for ? oversette ord fra engelsk til fransk # Returnerer den engelske oversettelsen av parameteren ord # hvis ord finnes blant verdiene i ordlista def oversettFraEngelskTilFransk(ord): word = "" # F?rst leter vi blant alle n?klene (franske ord) etter match for mot in ordbok: if ordbok[mot] == ord: # Hvis mot er den franske oversettelsen av ord # er mot oversettelsen vi er p? jakt etter: word = mot # tar vare p? ordet # for l?kka er ferdig. Hvis vi fant ord blant de engelske, returneres # den franske oversettelsen, hvis ikke returneres "" (den initelle verdien) return word # Funksjon som oversetter ord ved ? lete i fraOrdliste og hvis det finnes, # returnerer ordet med samme indeks i tilOrdliste def oversett1(ord, fraOrdliste, tilOrdliste): if ord in fraOrdliste: # Ord er i fraOrdliste for i in range(len(fraOrdliste)): if fraOrdliste[i] == ord: oversattOrd = tilOrdliste[i] else: # Ord er ikke i fraOrdliste oversattOrd = "FINNES IKKE!" return oversattOrd def oversett2(ord, fraOrdliste, tilOrdliste): if ord in fraOrdliste: # Ord er i fraOrdliste for i in range(len(fraOrdliste)): if fraOrdliste[i] == ord: return tilOrdliste[i] else: # Ord er ikke i fraOrdliste return "FINNES IKKE!" def oversett3(ord, fraOrdliste, tilOrdliste): if ord in fraOrdliste: # Ord er i fraOrdliste return tilOrdliste[fraOrdliste.index(ord)] else: # Ord er ikke i fraOrdliste return "FINNES IKKE!" # Funksjon som ber om og returnerer en tekstverdi # Parameteren oppfordring blir brukt som 'prompt' til brukeren # Returnerer tekstverdien brukeren skriver etter oppfordringen def beOmEnTekstverdi(oppfordring): tekst = input(oppfordring) return tekst # verdien i tall ?sendes tilbake? til kallstedet #################################################################### # Del 3 Hovedprogram: # Fyller opp ei tom ordbok franskTilEngelsk = {} franskTilEngelsk = lagOrdbok1001ord(franskTilEngelsk) print("Antall ord i ordboka: ", len(franskTilEngelsk)) # I ordboka ovenfor er franske ord n?kkel, mens verdien er det tilsvarende # engelske ordet. Lager 2 (tomme) lister, ¨Śn for engelske og ¨Śn for franske ord: engelskeOrd = [] franskeOrd = [] lagOrdlister(franskeOrd, engelskeOrd) print("Antall ord i engelskeOrd: ", len(engelskeOrd)) # Filen 1000engOrd.txt inneholder ogs? 1000 engelske ord. # Laster disse inn i ei ny ordliste nyEngelskListe = [] innfil = open("1000engOrd.txt") for linje in innfil: nyEngelskListe.append(linje.strip()) print("Antall ord i lista var", len(nyEngelskListe)) finnesIbegge = 0 for ord in nyEngelskListe : if ord in engelskeOrd: finnesIbegge = finnesIbegge + 1 print("Overlappende ord:", finnesIbegge) # print(nyEngelskListe) ord = beOmEnTekstverdi("Hvilket ord vil du oversette? ") # G?r i l?kke s? lenge ordet som skrives ikke er "STOPP!" while ord != "STOPP!": if ord in franskeOrd: # Oversetter fra fransk til engelsk print("'"+ord+"'", "oversatt til engelsk er", "'"+oversett3(ord, franskeOrd, engelskeOrd)+"'") elif ord in engelskeOrd: # Oversetter fra engelsk til fransk print("'"+ord+"'", "oversatt til fransk er", "'"+oversett3(ord, engelskeOrd, franskeOrd)+"'") else: # Ordet fantes ike i noen ordliste print("Finner ikke", ord, "i ordlistene") ord = beOmEnTekstverdi("Hvilket ord vil du oversette? ") # Her er ord == "STOPP!" print("Takk for n?")