1
resposta

Declaração de variáveis

Gostaria de saber se em Python tem o lugar certo para declarar a variável ou iniciar ela segue o exemplo abaixo:

    while (not enforcou and not acertou):
        chute = input("Qual letra ? ")
        chute = chute.strip()

        posicao = 0
        for letra in palavra_secreta:
            if (chute.upper() == letra.upper()):
                print("Encontrou a letra {} na posição {}".format(letra, posicao))
            posicao = posicao + 1

        print("jogando ... ")

A variável posição foi declarada acima do for certo, eu poderia adicionar ela no começo do código exemplo:

palavra_secreta = "python"
    enforcou = False
    acertou = False
    posicao = 0

    # enquanto(true E true)
    while (not enforcou and not acertou):
        chute = input("Qual letra ? ")
        chute = chute.strip()


        for letra in palavra_secreta:
            if (chute.upper() == letra.upper()):
                print("Encontrou a letra {} na posição {}".format(letra, posicao))
            posicao = posicao + 1

        print("jogando ... ")

Como poderão ver aqui declarei ela no inicio acimo do while, porém notei que o contador não funciona corretamente declarando a variável acima, poderiam me ajudar em relação a essa dúvida ?

1 resposta

Olá Lucas,

Muitas vezes você vai encontrar casos onde a posição da declaração da variável pode afetar o resultado ou até retornar um erro no seu código, mais a frente você vai ver o conceito de escopo de variável em programação, mas de início sua preocupação pode ficar mais em como a lógica de seu código pode ser afetada pela posição da variável.

Como regra geral eu recomendo declarar as variáveis próximo de onde vão ser utilizadas para facilitar o entendimento do código.

Nesse seu segundo exemplo existe um problema na lógica. A variável posicao serve como um índice para a palavra secreta, identificando a posição de cada letra para cada execução do for, sendo 0 para a primeira letra, 1 para a segunda letra, e assim por diante:

p - y - t - h - o - n
0 - 1 - 2 - 3 - 4 - 5

O que acontece é que na próxima vez que esse for executar (quando o jogador digitar a próxima letra), o valor de posição agora é 5, e por isso resultado fica estranho:

p - y - t - h - o - n
6 - 7 - 8 - 9 - 10 - 11

A solução para isso seria sempre antes do for mudar o valor da posição para 0 novamente.

posicao = 0

Não importando onde a variável foi declarada, com essa linha antes do for o código vai funcionar corretamente.

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