Cześć,
Mam ciężki problem.
Walczę z programem do odmiany czasowników, ale mam taki problem, że mam listę list, i za każdym razem, gdy odpalę moją funkcję
listy zmieniają położenie, a muszą mieć zawsze ten sam index, żeby działało, to co wykombinowałem.
Mój kod (nie bijcie):
Głowny moduł:
from pt_conjugator import enum_verbs_conjugator
from pt_conjugator import irregular_verbs_patterns
from pt_conjugator.enum_verbs_conjugator import TenseEndings
class NotInfinitiveError(ValueError):
pass
def main(word):
"""
This method check whether input is a string and a verb
:param word:
:return:
"""
try:
# word = input('Enter a verb to be conjugated\n').lower()
word = 'achar'
if not word.isalpha():
raise TypeError('A entrada incorreta | An incorrect input')
if not word.endswith(('ar', 'er', 'ir')):
raise NotInfinitiveError('A palavra inserida não é infinitivo | Not an infinitive')
except NotInfinitiveError as nie:
print(nie)
return
except TypeError as t_err:
print(t_err)
return
def conjugate_change_last_two_letters(word, endings=enum_verbs_conjugator.TenseEndings.AR_ENDINGS.value):
combined_persons_with_conjugated_forms = []
conjugated_forms = []
for tens, terminations in endings.items():
for e in terminations:
conjugated_forms.append(word[:-2] + e)
lists_of_conjugated_verbs = [conjugated_forms[i:i + 5] for i in range(0, len(conjugated_forms), 5)]
print(lists_of_conjugated_verbs)
def conjugate_ar_ended_verb(word):
endings = enum_verbs_conjugator.TenseEndings.AR_ENDINGS.value
conjugate_change_last_two_letters(word, endings)
print(conjugate_ar_ended_verb(word))
if __name__ == '__main__':
main('achar')
# input('Enter a verb to be conjugated\n').lower()
Enum:
from enum import Enum
# This module is a collection of all names of grammatical persons and tense endings.
class GrammaticalPersons(Enum):
PERSONS = ('Eu/I', 'Tu/You', 'Ele/Ela/você/He/She/It', 'Nós/We', "Else/Elas/vocês/They")
class TenseEndings(Enum):
AR_ENDINGS = {'INDICATIVO PRESENTE': ('o', 'as', 'a', 'amos', 'am'),
'PRETERITO_PERFEITO_INDICATIVO': ('ei', 'aste', 'ou', 'amos', 'aram'),
'PRETERITO_IMPERFEITO_INDICATIVO': ('ava', 'avas', 'ava', 'ávamos', 'avam'),
'PRETERITO_MAIS_QUE_PERFEITO': ('ara', 'aras', 'ara', 'áramos', 'aram'),
}
ENDINGS_ER = {'INDICATIVO_PRESENTE': ('o', 'es', 'e', 'emos', 'em'),
'PRETERITO_PERFEITO_INDICATIVO': ('i', 'este', 'eu', 'emos', 'eram'),
'PRETERITO_IMPERFEITO_INDICATIVO': ('ia', 'ias', 'ia', 'íamos', 'iam'),
'PRETERITO_MAIS_QUE_PERFEITO': ('era', 'eras', 'era', 'êramos', 'eram'),
}
ENDINGS_IR = {'INDICATIVO_PRESENTE': ('o', 'es', 'e', 'imos', 'em'),
'PRETERITO_PERFEITO_INDICATIVO': ('i', 'iste', 'iu', 'imos', 'iram'),
'PRETERITO_IMPERFEITO_INDICATIVO': ('ia', 'ias', 'ia', 'íamos', 'iam'),
'PRETERITO_MAIS_QUE_PERFEITO': ('ira', 'iras', 'ira', 'íramos', 'iram'),
}
CONDICIONAL_AND_FUTURO_ENDINGS_COMMON_FOR_EVERY_ENDING = {
'FUTURO_SIMPLES_INDICATIVO': ('ei', 'ás', 'á', 'emos', 'ão'),
'CONDICIONAL_SIMPLES': ('ia', 'ias', 'ia', 'íamos', 'iam')}
Chcę dostawać za każdym razem taki wynik:
[['acho', 'achas', 'acha', 'achamos', 'acham'], ['achava', 'achavas', 'achava', 'achávamos', 'achavam'], ['achara', 'acharas', 'achara', 'acháramos', 'acharam'], ['achei', 'achaste', 'achou', 'achamos', 'acharam']]
Ale zawsze kolejność list wewnątrz jest inna.
Macie jakieś podpowiedzi, czy cała logika jest do kosza?