1
resposta

Código não interpola

O código não interpola, apenas coloca cada uma das letras na frente da palavra exemplo.

palavra_exemplo = "lgica"
def insere_letras(fatias):
    novas_palavras = []
    letras = 'abcdefghijklmnopqrstuvwxyzàáâãèéêìíîòóôõùúûç'
    for E, D in fatias:
        for letra in letras:
            novas_palavras.append(E + letra + D)
        return novas_palavras

def gerador_palavras(palavra):
    fatias = []
    for i in range(len(palavra)+1):
        fatias.append((palavra[:i], palavra[i:]))
    palavras_geradas = insere_letras(fatias)
    return palavras_geradas

palavras_geradas = gerador_palavras(palavra_exemplo)
print(palavras_geradas)

Saída:

['algica', 'blgica', 'clgica', 'dlgica', 'elgica', 'flgica', 'glgica', 'hlgica', 'ilgica', 'jlgica', 'klgica', 'llgica', 'mlgica', ...etc...,  'çlgica']

Mesmo após a correção do professor de "lista" para "palavra", depois que ele roda, o retorno dele também é esse. Não deveríamos ter como saída todos os casos: 'algica, lagica, lgaica, lgiaca, lgicaa, lgicaa, blgica, lbgica, etc? Parece que o código não está fatiando. Como no exemplo abaixo:

lista = "cdigo"
palavra_exemplo = "cdigo"
def gerador_palavras(palavra):
    fatias = []
    for i in range(len(palavra)+1):
        fatias.append((lista[:i],lista[i:]))
    print(fatias)

gerador_palavras(palavra_exemplo)

Saída:

[('', 'cdigo'), ('c', 'digo'), ('cd', 'igo'), ('cdi', 'go'), ('cdig', 'o'), ('cdigo', '')]

Não consigo ve onde está o erro. Podem me ajudar? Obrigado

1 resposta

Oii Marcos, tudo certinho por aí?

Desculpa a demora em te dar um retorno por aqui. O problema estava ocorrendo por conta do seu return da função insere_letras(), ele estava indentado dentro do for, dando um retorno apenas para a primeira separação, note que quando colocamos o return com a indentação correta, ele retorna o resultado como na aula!

O código corrigido está aqui:

palavra_exemplo = "lgica"
def insere_letras(fatias):
    novas_palavras = []
    letras = 'abcdefghijklmnopqrstuvwxyzàáâãèéêìíîòóôõùúûç'
    for E, D in fatias:
        for letra in letras:
            novas_palavras.append(E + letra + D)
    return novas_palavras

def gerador_palavras(palavra):
    fatias = []
    for i in range(len(palavra)+1):
        fatias.append((palavra[:i], palavra[i:]))
    palavras_geradas = insere_letras(fatias)
    return palavras_geradas

palavras_geradas = gerador_palavras(palavra_exemplo)
print(palavras_geradas)

Antes seu insere_letras() estava dessa maneira aqui:

palavra_exemplo = "lgica"
def insere_letras(fatias):
    novas_palavras = []
    letras = 'abcdefghijklmnopqrstuvwxyzàáâãèéêìíîòóôõùúûç'
    for E, D in fatias:
        for letra in letras:
            novas_palavras.append(E + letra + D)
        return novas_palavras

Se você ainda estiver com alguma dúvida, pode me chamar por aqui, tudo bem?

Bons estudos ^^