Olá!
Estou na aula 07. Melhorando o seu código - item 03 - Criando mais funções.
A função sugerida pelo professor marca_chute_correto(chute, letras_acertadas, palavra_secreta)
possui a seguinte implementação que me causou uma dúvida:
- A variável
letras_acertadas
está definida dentro do corpo da funçãojogar()
entretanto a funçãomarca_chute_correto()
modifica essa variável internamente na própria função. No que pese ela ser passada na assinatura da função, dentro do corpo da funçãomarca_chute_correto()
a variávelletras_acertadas
não deveria ser uma cópia da mesma variável definida na funçãojogar()
e, consequentemente, as alterações realizadas nesse escopo deveriam ficar restritas a ele? Qual é o comportamento das variáveis recebidas na assinatura da função com relação a variável original da função que chamou essa nova função?
Segue código:
import random
def jogar():
imprime_mensagem_abertura()
palavra_secreta = carrega_palavra_secreta()
letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
print(letras_acertadas)
enforcou = False
acertou = False
erros = 0
while (not acertou and not enforcou):
chute = pede_chute()
if (chute in palavra_secreta):
marca_chute_correto(chute, letras_acertadas, palavra_secreta)
else:
erros += 1
enforcou = erros == 6
acertou = "_" not in letras_acertadas
print(letras_acertadas)
if (acertou):
print("Você ganhou!")
else:
print("Você perdeu!")
print("Fim do jogo")
def marca_chute_correto(chute, letras_acertadas, palavra_secreta):
index = 0
for letra in palavra_secreta:
if (chute == letra):
letras_acertadas[index] = letra
index += 1