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

continue...

Li todas as questões sobre o continue, mas ainda não consegui entender. Minha intenção é exatamente que o jogador perca uma chance mesmo tendo chutado um número fora da regra. Fiz os teste e meu jogo está fazendo isso sem o uso do continue, e ainda exibo a mensagem "perdeu uma chance!" rsss. Em que condições exatamente seria necessário o uso do continue?

4 respostas

print("?????????????????????????????????") print("Bem vindo ao jogo de Adivinhação de número!") print("Voce tem 6 chances") print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")

numero_secreto = 26 chances = 6 rodada = 1 for rodada in range (1, chances + 1): print("Tentativa {} de {}".format (rodada, chances)) chute = input("digite seu chute entre 1 e 100: ") print("voce digitou " , chute) chutou = int(chute)

acertou     = numero_secreto == chutou
chute_alto  = numero_secreto < chutou
chute_baixo = numero_secreto > chutou
if acertou:
  print("ACERTOU!")
  print("fim do jogo")
  break
else:
    if (chutou < 1 or chutou > 100):
        print("O chute deve ser entre 1 e 100, perdeu uma chance!")
    else:
        if chute_alto:
            print("chutou alto")
        if chute_baixo:
            print("chutou baixo")

if rodada == 6:
    print("ACABARAM SUAS CHANCES, FIM DO JOGO")
solução!

Na programação você sempre vai se deparar com duas ou mais opções que resolvem o mesmo problema. Eu gosto de usar o if + continue em loops para deixar bem claro no código que caso uma condição seja verdadeira/falsa nada mais é executado naquela iteração e faço o código pegar o próximo item de iteração.

Com o tempo você também vai perceber que não precisa escrever tanto if/else. Eu uso muito pouco "else", fiz umas alterações no seu código e só deixei um else nesse caso, por ele estar bem associado ao if (Chute Alto/Baixo).

Outra coisa importante é sempre colocar um validador de input de usuário e ter alguma mensagem de alerta para que ele possa entender o que fez de errado.

Por último, você pode gerar números aleatórios com o pacote random.

"""Jogo de Adivinhação"""
import random


def jogo(numero_secreto, chances):
    """
    Dado um número secreto e o número de chances, inicializa o jogo.
    O jogo finaliza quando o jogador acerta o número secreto ou o número de chances é atingido.
    :param numero_secreto: int
    :param chances: int
    :return:
    """
    print("?????????????????????????????????")
    print("Bem vindo ao jogo de Adivinhação de número!")
    print(f"Voce tem {chances} chances")
    print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
    for rodada in range(1, chances + 1):
        print_sep()
        print(f"Tentativa {rodada} de {chances}")
        chute = input(f"Digite seu chute entre {NUM_MIN} e {NUM_MAX} (inteiros): ")
        print(f"Você digitou: {chute}")
        try:
            chutou = int(chute)
            if chutou < {NUM_MIN} or chutou > {NUM_MAX}:
                raise ValueError
        except ValueError:
            print(
                f"[Erro] O chute deve ser um número inteiro entre {NUM_MIN} e {NUM_MAX}, "
                f"perdeu uma chance!")
            continue

        if numero_secreto == chutou:
            print_sep()
            print("ACERTOU!")
            print("Fim do Jogo")
            print_sep()
            return

        if numero_secreto < chutou:
            print("Chutou Alto")
        else:
            print("Chutou Baixo")
    print_sep()
    print("ACABARAM SUAS CHANCES, FIM DO JOGO")
    print(f"O número secreto era {NUM_SECRETO}")
    print_sep()
    return


def print_sep():
    """
    Imprime um separador de linhas para visualizar melhor
    cada iteração
    """
    print("=" * 79)


if __name__ == '__main__':
    NUM_MIN = 1
    NUM_MAX = 100
    NUM_SECRETO = random.randint(NUM_MIN, NUM_MAX)

    NUM_CHANCES = 6

    jogo(NUM_SECRETO, NUM_CHANCES)

dicas demais obrigado pela ajuda.

Legal, Leandro, vc deixou claro. Li e reli e vou usar suas dicas, muito obrigado!