Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema com retorno de funções

Retorno nao altera o valor das variaveis porque? Alguem tem uma solução!?

trecho do codigo

def substitui_lacuna(quiz, pergunta, index):
    # substitui a lacuna
    quiz = quiz.replace(lacuna(pergunta), gabarito[index].upper())
    print "CORRETO!"
    print quiz
    return quiz

def pontua(pontos, dificuldade):
    pontos += pontuador(dificuldade)
    return pontos


def jogar (quiz, gabarito):
    # jogo em sí comeca o laco de perguntas e respostas
    # Preferi elif à usar if + if/else porque acho menos 'sujo' à ter que trabalhar com operações
    # dentro dos colchetes onde aplico o index
    pergunta = 1
    index = 0
    erros = 0
    venceu = False
    perdeu = False
    pontos = 0

    while not venceu or perdeu:
        erros_restantes = max_erros - erros
        resposta = pedir_resposta(pergunta, erros_restantes)

        if index==9:
            substitui_lacuna(quiz, pergunta, index)
            pontua(pontos, dificuldade)
            vitoria(pontos)
            break
        elif resposta.upper() == gabarito[index].upper():
            substitui_lacuna(quiz, pergunta, index)
            pontua(pontos, dificuldade)
            pergunta += 1
            index += 1

Não sei pq quando tiro da função esse trecho funciona ele substitui a linha e no proxima volta do loop ela continua preenchida mas quando passo para função ao retornar o loop volta pra o estado inicial.

    quiz = quiz.replace(lacuna(pergunta), gabarito[index].upper())
    print "CORRETO!"
    print quiz
    return quiz

mesmo ocorre aqui quando dentro da função a pontuação zera a cada volta do loop mesmo botando return pontos no final da função. Já quando esta fora ela age de forma correta e vai agregando os pontos.

    pontos += pontuador(dificuldade)
1 resposta
solução!

descobri o erro.

Faltava eu atrelar o retorno a variavel portanto o trecho que está assim

            substitui_lacuna(quiz, pergunta, index)
            pontua(pontos, dificuldade)

mudei para

        quiz  =   substitui_lacuna(quiz, pergunta, index)
        pontos = pontua(pontos, dificuldade)

E deu certo

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software