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

[Dúvida] Aconteceu algo interessante comigo...

eu fiz o codigo exatamente como o professor fez exceto por algumas modificações minha nas interações do jogo... acompanhei a aula passo a passo. porém algo interessante aconteceu com a variável 'rodada' e o pycharm informava que ela não estava sendo usada e apaguei a variavel e realmente o código inteiro funciona normal sem ela...isso me deixou intrigado e eu acredito que tem algo a ver com o laço 'for', mas não tenho certeza.se alguem fizer a gentileza de me explicar o que foi que aconteceu eu ficaria muito agradecido segue meu codigo abaixo: `

print(35 * "#")
print("Bem vindo ao jogo - adivinhe o número")
print(35 * "#")

numero_secreto = random.randint(1, 100)
total_de_tentativas = 0

print("Você deve escolher o seu nivel de dificuldade...")
print("Nivel fácil (1) Nivel médio (2) Nivel dificil (3)")
nivel = int(input("insira aqui o nivel desejado  "))

if nivel == 1:
    total_de_tentativas = 20
elif nivel == 2:
    total_de_tentativas = 10
elif nivel == 3:
    total_de_tentativas = 5
else:
    print("as Opções são 1, 2 ou 3... você não sabe ler??? vamos tentar de novo, presta atenção!")

for rodada in range(1, total_de_tentativas + 1):
    print("tentativas {} de {}".format(rodada, total_de_tentativas))
    chute_str = input("Escolha o seu número: ")
    print("Você escolheu ", chute_str)
    palpite = int(chute_str)

    if palpite < 1 or palpite > 100:
        print("Você deve digitar um número entre 1 e 100")
        continue

    acertou = numero_secreto == palpite
    if acertou:
        print("Parabens, você acertou!!!")
        break
    elif palpite <= numero_secreto:
        print("Errou!!! Tente um valor maior")
    elif palpite >= numero_secreto:
        print("Errou!!! Acho que você deu um palpite muito alto")
    else:
        print("Que pena,Você perdeu!")
else:
    print("Fim de Jogo")

`

1 resposta
solução!

Olá,

isso acontece basicamente pq o Python recria a variável dentro do loop for. A partir daí, aquele variavel declarada antes não existe mais, e não será mais utilizada.

Veja o exemplo abaixo:

Código:

    i = 10
    print(f'Valor de i: {i}, Endereço de i: {id(i)}')

    for i in range(1, 4):
        print(f'Valor de i: {i}, Endereço de i: {id(i)}')

    print(f'Valor de i: {i}, Endereço de i: {id(i)}')

Saída:

Valor de i: 10, Endereço de i: 139625318000480
Valor de i: 1, Endereço de i: 139625318000192
Valor de i: 2, Endereço de i: 139625318000224
Valor de i: 3, Endereço de i: 139625318000256
Valor de i: 3, Endereço de i: 139625318000256

Note que o endereço da variável muda a cada loop, ou seja, uma nova posição na memória é utilizada e atribuida a referência a variável i.

Desta forma, o Pycharm entende que o i inicialmente declarado nunca será utilizado.

Até +