1
resposta

while

Uma duvida, estava brincando com o código, acrescentei um while, enquanto o chute for ( < 1 or chute > 100) ele não contar as tentativas e sair do loop apenas quando o valor válido, no entanto ao entrar no loop e digitar o valor correto, o código informa que errou, até coloquei um print para comparar mas os valores estão corretos.


print('=========================')
print ('Bem vindo ao adivinhção')
print('=========================')


secreto = 43
tentativas = 3

for rodada in range(1, tentativas +1):
    print('Tentativas {} de {}'.format(rodada, tentativas))
    chute = int(input('Digite seu chute: '))
    acertou = chute == secreto
    maior = chute > secreto
    menor = chute < secreto
    print('Você Digitou', chute)
    while (chute < 1 or chute > 100):
        print('Você deve digitar um número entre 1 e 100 ')
        chute = int(input('Digite seu chute: '))
        print(chute,secreto)
        continue
    if acertou:
        print('Acertou')
        break
    else:
        if (maior):
            print('Errou, seu chute foi maior')
        elif(menor):
            print('Seu chute foi menor')
    ![Insira aqui a descrição dessa imagem para ajudar na acessibilidade](https://cdn1.gnarususercontent.com.br/1/744827/167d71ef-f9da-482b-8e89-0b27bbd5bfe9.png)  
1 resposta

Boa tarde amigo, tudo bem?

Achei onde está o erro, as suas variáveis acertou, maior e menor estão sendo definidas acima do while, isso faz com que essas variáveis não peguem os novos valores do input que está dentro do loop, pois elas foram definidas antes e nesse caso está guardando o valor < 1 ou >100 por exemplo...Abaixo segue a modificação que realizei:

print('=========================')
print ('Bem vindo ao adivinhção')
print('=========================')


secreto = 43
tentativas = 3

for rodada in range(1, tentativas +1):
    print('Tentativas {} de {}'.format(rodada, tentativas))
    chute = int(input('Digite seu chute: '))
    print('Você Digitou', chute)
    while (chute < 1 or chute > 100):
        print('Você deve digitar um número entre 1 e 100 ')
        chute = int(input('Digite seu chute: '))
        print(chute,secreto)
        continue
    acertou = chute == secreto
    maior = chute > secreto
    menor = chute < secreto
    if acertou:
        print('Acertou')
        break
    else:
        if (maior):
            print('Errou, seu chute foi maior')
        elif(menor):
            print(chute)
            print('Seu chute foi menor')

Pode ver que agora as variáveis estão conseguindo pegar o novo valor do chute dentro do loop e compará-lo no if e else. Qualquer dúvida pode responder por aqui, espero ter ajudado :)

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