Dit script heb ik lang geleden in C++ geschreven. Om er een mooi en eenvoudig GUI bij te schrijven heb ik het naar python vertaald.
De reden dat ik het heb geschreven is dat ik moeite had met het leren van woorden. Met dit script kan ik mezelf overhoren. Het script werkt. Met een GUI wil ik het helemaal afmaken.
De indeling van de woordenlijst (file='words') is met twee kolommen. De eerste een woord in taal1 en de tweede de vertaling daarvan naar taal2 in de tweede kolom (tab gescheiden). Eenvoudig, dus.
#!/usr/bin/env python3
import random
import subprocess
# Type beschrijft een woord met de bijbehorende vertaling
class vertaling:
def __init__(self, woord1='', woord2=''):
self.woord1 = woord1
self.woord2 = woord2
# Type met lijst van woorden met informatie over de lijst
class woordenlijst:
# Dit laad de woorden vanuit self.file
def readfile(self):
self.woorden = []
# bestand openen.
with open(self.file) as f:
for line in f:
line = line.rstrip()
line = line.split('\t')
a = vertaling()
if len(line) >= 2:
a.woord1 = line[0]
a.woord2 = line[1]
self.woorden.append(a) # toevoegen van vertaling aan woorden[]
# init van nieuwe lijst.
def __init__(self,file='words',taal1='Nederlands',taal2='Engels'):
self.taal1 = taal1
self.taal2 = taal2
self.file = file
self.readfile()
# vraag stellen en nakijken.
def vraag(self,richting, id):
if richting:
juist = self.woorden[id].woord2
print('Vertaal {0} naar {1}.'.format(self.woorden[id].woord1,self.taal2))
else:
juist = self.woorden[id].woord1
print('Vertaal {0} naar {1}.'.format(self.woorden[id].woord2,self.taal1))
ans = input()
# Geeft terug of het antwoord juist is.
if ans == juist:
return('juist')
else:
return('fout')
# willekeurig de lijst overhoren.
def overhoring(self):
l = len(self.woorden)
s = list(range(l))
while len(s) != 0:
r = random.choice(s)
richting = bool(random.getrandbits(1))
print('Antwoord is ' + self.vraag(richting,r))
s.remove(r)
# De woordenlijst openen in gedit voor bewerking
def openwordsfile(self):
proc = subprocess.Popen(['gedit', self.file])
proc.wait
# opnieuw woordenlijst laden.
self.readfile()
# object van de class woordenlijst
lijst = woordenlijst()
# starten met de volgende opdracht
lijst.overhoring()