''' Dette programmet lå til grunn for forelesningen 7. mars 2023. Det illustrerer lister og for-løkker, funksjoner, returverdier, parametre, innlesing fra fil utskrift til fil. ''' ################################################################################ # Del 1 Funkjsondefinisjoner # Denne funksjonen oversetter ved å finne indeksen til et ord i liste fraOrdliste # Ordet (oversettelsen) som returneres er ordet på samme indeks i tilOrdliste # Forutsetter at listene er 'parallelle', dvs. at samme ord (oversatt) ligger på samme indeks def oversett(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 # Funksjon som legger linjer (ord) fra en fil inn i ei liste # Parameter: innfilnavn # Returnerer lista med linjer fra innfilen, uten '\n' på slutten def lagOrdlisteFraFil(filnavn): innfil = open(filnavn) liste = [] for linje in innfil: liste.append(linje.strip()) return liste #################################################################### # Del 2 Hovedprogram: ordliste = lagOrdlisteFraFil("1001FraEngOrd.txt") # Ordene i 1001FraEngOrd.txt er adskilt med strengen ' = ' # Bruker tekstfunksjonen split for å splitte opp linjene i 2 lister: franskeOrd = [] engelskeOrd = [] for linje in ordliste: toOrd = linje.split(" = ") # toOrd[0] inneholder alle tegn før " = " # toOrd[1] inneholder alle tegn etter " = " franskeOrd.append(toOrd[0]) engelskeOrd.append(toOrd[1]) # Fra før har vi de to listene franskeOrd og engelskeOrd # Filen 1000engOrd.txt inneholder 1000 engelske ord, ett ord pr. linje nyEngelskliste = lagOrdlisteFraFil("1000engOrd.txt") # Lage en liste med oversettelse til fransk for de ordene som finnes # i begge de engelske listene engelskTilFransk = [] for ord in engelskeOrd: if ord in nyEngelskliste: engelskTilFransk.append(ord + " = " + franskeOrd[engelskeOrd.index(ord)]) # Skrive den nye ordboka til fil: utfil = open ("iBeggeEngFra.txt", "w") # legg merke til 2. parameter 'w' for write for linje in engelskTilFransk: linjeTilFil = linje + '\n' # legger til tegn for linjeskift utfil.write(linjeTilFil) utfil.close() # Lukker filen. Dette forhindrer ytterligere skriving til den print("Filen iBeggeEngFra.txt skrevet. Avslutter...")