patternpythonMinor
Command line tool for Italian language studies
Viewed 0 times
linelanguagestudiestoolforcommanditalian
Problem
I made a small command line tool to help my Italian studies. Any thoughts on how it could be improved? I can't think of much but would like to be proved wrong.
```
import random
class RegularVerb(object):
def __init__(self, name):
self._name = name
def name(self):
return self._name
def _make(self, verb_end):
return self.name()[:-3] + verb_end
def _build_condizionale_semplice(self, verb_forms, prefix):
def verb_base(prefix):
return (prefix + condizionale_semplice_base
for condizionale_semplice_base in
['rei', 'resti', 'rebbe', 'remmo', 'reste', 'rebbero']
)
return dict(zip(verb_forms, verb_base(prefix)))
class EreVerb(RegularVerb):
def __init__(self, name, verb_forms):
super(EreVerb, self).__init__(name)
self._condizionale_semplice = self._build_condizionale_semplice(verb_forms, 'e')
def condizionale_semplice(self, verb_form):
return self._make(self._condizionale_semplice[verb_form])
class IreVerb(RegularVerb):
def __init__(self, name, verb_forms):
super(IreVerb, self).__init__(name)
self._condizionale_semplice = self._build_condizionale_semplice(verb_forms, 'i')
def condizionale_semplice(self, verb_form):
return self._make(self._condizionale_semplice[verb_form])
class AreVerb(RegularVerb):
def __init__(self, name, verb_forms):
super(AreVerb, self).__init__(name)
self._condizionale_semplice = self._build_condizionale_semplice(verb_forms, 'e')
def condizionale_semplice(self, verb_form):
return self._make(self._condizionale_semplice[verb_form])
class Questioner():
def __init__(self, verb_forms, verbs):
self._verb_forms = verb_forms
self._verbs = verbs
def _handle_answer(self, user_answer, correct_answer):
if user_answer == correct_answer:
print "bravo!"
else:
print "no, co
```
import random
class RegularVerb(object):
def __init__(self, name):
self._name = name
def name(self):
return self._name
def _make(self, verb_end):
return self.name()[:-3] + verb_end
def _build_condizionale_semplice(self, verb_forms, prefix):
def verb_base(prefix):
return (prefix + condizionale_semplice_base
for condizionale_semplice_base in
['rei', 'resti', 'rebbe', 'remmo', 'reste', 'rebbero']
)
return dict(zip(verb_forms, verb_base(prefix)))
class EreVerb(RegularVerb):
def __init__(self, name, verb_forms):
super(EreVerb, self).__init__(name)
self._condizionale_semplice = self._build_condizionale_semplice(verb_forms, 'e')
def condizionale_semplice(self, verb_form):
return self._make(self._condizionale_semplice[verb_form])
class IreVerb(RegularVerb):
def __init__(self, name, verb_forms):
super(IreVerb, self).__init__(name)
self._condizionale_semplice = self._build_condizionale_semplice(verb_forms, 'i')
def condizionale_semplice(self, verb_form):
return self._make(self._condizionale_semplice[verb_form])
class AreVerb(RegularVerb):
def __init__(self, name, verb_forms):
super(AreVerb, self).__init__(name)
self._condizionale_semplice = self._build_condizionale_semplice(verb_forms, 'e')
def condizionale_semplice(self, verb_form):
return self._make(self._condizionale_semplice[verb_form])
class Questioner():
def __init__(self, verb_forms, verbs):
self._verb_forms = verb_forms
self._verbs = verbs
def _handle_answer(self, user_answer, correct_answer):
if user_answer == correct_answer:
print "bravo!"
else:
print "no, co
Solution
Maybe this could provide of a more neat way of relating verbs with veb_forms:
not sure if verb_binder dictionary should be a module global or local to the function or maybe it should be located elsewhere, but this is the idea.
verb_binder = dict(are=AreVerb, ire=IreVerb, ere=EreVerb)
def build_regular_verbs(verbs, verb_forms):
def make(verb):
try:
return verb_binder[verb[-3:]](verb, verb_forms)
except KeyError:
raise Exception("not a regular verb")
return [make(v) for v in verbs]not sure if verb_binder dictionary should be a module global or local to the function or maybe it should be located elsewhere, but this is the idea.
Code Snippets
verb_binder = dict(are=AreVerb, ire=IreVerb, ere=EreVerb)
def build_regular_verbs(verbs, verb_forms):
def make(verb):
try:
return verb_binder[verb[-3:]](verb, verb_forms)
except KeyError:
raise Exception("not a regular verb")
return [make(v) for v in verbs]Context
StackExchange Code Review Q#6385, answer score: 3
Revisions (0)
No revisions yet.