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

Dúvida sobre a variavel criada no For

Por que se eu coloco o "for rodada in range (1,total_tentativas+1)" e dentro desse for eu coloco um "rodada = rodada+1" , quando rodar novamente, eu deveria pular o rodada = 1 para rodada = 3, não? Já que primeiro quando meu "for" estiver no 1, vou fazer um "rodada = rodada +1" que vai ficar 2, dai quando rodar o for novamente deveria adicionar +1 no rodada, ficando = 3. Mas quando rodo o código, o rodada fica com valores 1, 2 e 3.

Segue meu código:

separador = "*************"
print(separador,"bem vindo ao jogo de adivinhação!",separador, sep="\n")

numero_secreto = 42
total_tentativas = 3

for rodada in range (1,total_tentativas+1,1):
    print("Essa é sua {} tentativa de {} tentativas totais = {} / {}".format(rodada,total_tentativas,rodada,total_tentativas), sep=" ", end="\n")
    chute = input("Digite um numero:")
    chute=float(chute)
    rodada = rodada+1
    acertou = numero_secreto == chute
    maior = chute>numero_secreto
    menor = chute<numero_secreto

    print("voce digitou",chute)
    if(acertou):
        print(separador,"Acertou",separador, sep="\n")
    else:
        if (menor):
            print(separador,"Errou, seu chute foi menor que o numero secreto",separador, sep="\n")
        elif(maior):
            print(separador,"Errou, seu chute foi maior que o numero secreto",separador, sep="\n")

print("Acabou o jogo")
1 resposta
solução!

Olá, Daniela! Tudo bom?

No seu código, você utiliza o loop "for" para percorrer as tentativas do jogo e a cada iteração desse loop, a variável "rodada" recebe um valor da função "range". No entanto, logo em seguida, você incrementa manualmente o valor de "rodada" com a expressão "rodada = rodada + 1".

O problema é que, mesmo que você incremente o valor de "rodada" dentro do loop, isso não afeta a próxima iteração do loop. Ou seja, a variável "rodada" sempre receberá um novo valor da função "range" a cada iteração, independentemente do valor que você tenha atribuído anteriormente, visto que o valor da condição é determinada no loop (diferente do while, que podemos alterar a condição dentro do loop).

Para resolver essa questão, você pode remover a linha "rodada = rodada + 1" do seu código. Dessa forma, a variável "rodada" receberá automaticamente os valores da função "range" em cada iteração do loop.

Aqui está o trecho do código corrigido:

separador = "*************"
print(separador,"bem vindo ao jogo de adivinhação!",separador, sep="\n")

numero_secreto = 42
total_tentativas = 3

for rodada in range(1, total_tentativas+1):
    print("Essa é sua {} tentativa de {} tentativas totais = {} / {}".format(rodada, total_tentativas, rodada, total_tentativas), sep=" ", end="\n")
    chute = input("Digite um número:")
    chute = float(chute)
    
    acertou = numero_secreto == chute
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    print("Você digitou", chute)
    if acertou:
        print(separador,"Acertou",separador, sep="\n")
    else:
        if menor:
            print(separador,"Errou, seu chute foi menor que o número secreto",separador, sep="\n")
        elif maior:
            print(separador,"Errou, seu chute foi maior que o número secreto",separador, sep="\n")

print("Acabou o jogo")

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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