1
resposta

"Melhorando" o código do Jogo de Adivinhação!

Olá! Fiz o curso todo escrevendo o código igual ao do professor em cada vídeo. Ao final do curso, abri um arquivo em branco e refiz todo o código utilizando apenas minhas anotações e minha lógica, afim de estudar mais e guardar todos os conceitos aprendidos. Nisso, percebi dois "bugs". Vou descrevê-los abaixo:

1 - (Vamos considerar que escolhemos a dificuldade 3 - Difícil) Ao errar as 5 tentativas, o último erro não afeta a contagem dos pontos. Apesar de não saber se isso foi proposital durante o curso, considerei que faria mais sentido levar em conta o último erro e descontar do total de pontos também;

2 - Assim como o primeiro, apesar de não saber se foi proposital, não achei justo contabilizar como tentativas possíveis "erros de digitação" colocando número < 1 ou > 100;

Adicionei então algumas linhas ao código e corrigi esses "bugs". Agora o últimos erro é contabilizado no total de pontos e o inputs < 1 e > 100 não descontam do total de tentativas. Adoraria saber o que acharam e se existe algum erro ou modo mais fácil de arrumar esses "bugs". Valeu! Segue o meu código:

import random

def jogar():
    print("***************************************")
    print("***Bem vindo ao jogo de Adivinhação!***")
    print("***************************************")

    print("Escolha a sua dificuldade!")
    print("(1)Fácil (2)Médio (3)Difícil")

    nivel = int(input("Dificuldade selecionada: "))

    if(nivel == 1):
        numero_tentativa = 20
    elif(nivel == 2):
        numero_tentativa = 10
    elif(nivel == 3):
        numero_tentativa = 5

    numero_secreto = random.randrange(1, 101)
    pontos = 1000
    rodada = 1

    print("***Tente adivinhar o número secreto!***")
    while(rodada <= numero_tentativa):
        chute = int(input("Digite um número entre 1 e 100: "))

        if(chute < 1 or chute > 100):
            print("Você deve escolher um número entre 1 e 100!")
            rodada = 1
            continue

        print("Tentativa {} de {}".format(rodada, numero_tentativa))
        print("Você digitou {}".format(chute))

        if(chute == numero_secreto):
            print("Você acertou!")
            print("Você fez {} pontos".format(pontos))
            break
        elif(chute < numero_secreto):
            print("Você errou! O número secreto é maior!")
            if(numero_tentativa == rodada):
                pontos_perdidos = abs(numero_secreto - chute)
                pontos = pontos - pontos_perdidos
                print("Você fez {} pontos".format(pontos))
        elif(chute > numero_secreto):
            print("Você errou! O número secreto é menor!")
            if(numero_tentativa == rodada):
                pontos_perdidos = abs(numero_secreto - chute)
                pontos = pontos - pontos_perdidos
                print("Você fez {} pontos".format(pontos))

        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos

        rodada = rodada + 1

    print("Fim do jogo!")

if(__name__ == "__main__"):
    jogar()
1 resposta

Olá,

acho que as duas situações poderiam ser consideradas corretas. Se considerar (ou não) valor diferentes do intervalo, seria legal informar o restante de chances a cada jogada.

Sugestão: Opte sempre por utilizar rodada += 1 ao invés de rodada = rodada + 1

[]'s