1
resposta

Variavel global refletindo mudança local.

Eu tava lendo essa discussão https://cursos.alura.com.br/forum/topico-duvida-entre-retorno-parametros-nas-funcoes-47291 E não sei se entendi direito. Veja o código a seguir:

letras_acertadas = inicializa_letras_acertadas(palavra_secreta

def marca_chute_correto(chute, letras_acertadas, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if (chute.upper() == letra.upper()):
            letras_acertadas[index] = letra
        index += 1

Percebam que a função marca_chute_correto, internamente, está modificando a variavel letras_acertadas (quando ela faz letras_acertadas[index] = letra, correto? Porém, como essa função tem o parâmetro letras_acertadas(que vem da funçaõ jogar()), essa mudança interna, ou seja, letras_acertadas[index] = letra passa a refletir no parametro, de tal forma que a variavel global letras_acertadas passa a refletir essa mudança? Eh isso mesmo??

1 resposta

Olá Rogério,

Acho que entendi a sua dúvida. A função marca_chute_correto tem um parâmetro de mesmo nome da variável, mas isso não é obrigatório, o código poderia muito bem ser assim:

letras_acertadas = inicializa_letras_acertadas(palavra_secreta)

def marca_chute_correto(chute, letras_corretas, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if (chute.upper() == letra.upper()):
            letras_corretas[index] = letra
        index += 1

chute = 'a'

marca_chute_correto(chute, letras_acertadas, palavra_secreta)

A variável letras_acertadas está sendo alterada pela função marca_chute_correto, pois ela é enviada como parâmetro. Para fixar melhor, pode fazer um teste removendo a variável da função e vendo o resultado:

letras_acertadas = inicializa_letras_acertadas(palavra_secreta)

def marca_chute_correto(chute, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if (chute.upper() == letra.upper()):
            letras_acertadas[index] = letra
        index += 1

chute = 'a'

marca_chute_correto(chute, palavra_secreta)

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