# Programfilen består av 3 hoveddeler # 1 definisjon av funksjoner for å lage ordlister og -bøker # 2 noen funksjondefinisjoner for å gjøre oppslag i ordboka # 3 Et hovedprogram som oversetter fra fra fransk til engelsk eller omvendt ########################################################### # Del 1 # Funksjoner som oppretter (returnerer) ordlister og -bøker # Ligger i egen fil "ordsamlinger.py" fordi to av dem er lange from ordsamlinger import lagOrdlisteFraFil, \ lagOrdlisterMed1001ordFrEn, \ lagOrdbok1001ord ############################################################################# # 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 = {} # Denne er ikke nødvendig da lagOrdbok1001ord returnerer ei ordbok franskTilEngelsk = lagOrdbok1001ord() 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 = [] ordlister = lagOrdlisterMed1001ordFrEn() franskeOrd = ordlister[0] engelskeOrd = ordlister[1] 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å")