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)