Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Solução alternativa que encerra o jogo quando acerta na primeira tentativa

Oi, pessoal! A solução que o instrutor passou na aula, como alguns devem ter percebido, continua oferecendo tentativas mesmo quando o usuário acerta no primeiro chute. Eu achei esta solução, na qual faço a variável rodada ser maior que 3:

if (acertou): print("Parabéns! Você acertou!") rodada=rodada+3

Eficaz, porém, se fosse aplicada em um caso real poderia, por exemplo, causar um erro se aumentasse a quantidade de tentativas, sem que se alterasse manualmente também aquela linha de código em negrito. Alguém conseguiu achar um solução mais precisa, utilizando do que foi ensinado até essa aula?

Segue o script:

print("Bem-vindo(a) ao Jogo da Adivinhação!")

numero_secreto=42

total_de_tentativas=3

rodada=1

while(rodada<=total_de_tentativas):
    print("Tentativa", rodada,"de", total_de_tentativas)

    chute_str=input("Tente adivinhar o número secreto! Digite seu palpite aqui: ")

    print("Você digitou: ", chute_str)

    chute=int(chute_str)

    acertou=chute==numero_secreto

    a_maior= chute>numero_secreto

    a_menor=chute<numero_secreto

    if (acertou):
        print("Parabéns! Você acertou!")
        rodada=rodada+3
    else:
        if(a_maior):
            print("Você errou. Seu chute foi maior do que o número secreto!")
        elif(a_menor):
            print("Você errou. Seu chute foi menor do que o número secreto!")
    rodada=rodada+1
print("Fim de Jogo!")

Obrigado!

2 respostas
solução!

Boa tarde, Kaue! Tudo bem?

Em aulas futuras ele detalha mais sobre os tópicos que irei dizer, mas você pode utilizar o comando break. Com ele, o fluxo do programa (no caso do laço while) será interrompido. Algo como:

    if (acertou):
        print("Parabéns! Você acertou!")
        break

No tópico abaixo tem mais detalhes sobre o comando, além de outros comandos como o continue (para caso de um número inválido, por exemplo, no qual interrompe o fluxo do looping atual).

https://pt.stackoverflow.com/questions/322/qual-a-diferen%C3%A7a-entre-break-pass-e-continue-em-python

http://excript.com/python/instrucao-break-python.html

Tudo bem, Henrique! Era essa mesma a solução que o instrutor deu quando avançou algumas aulas. Obrigado pela resposta e pelo envio dos links com os detalhes!