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

[Projeto] Código final do curso Python 3 parte 1

Colocando aqui para discussão de todos sobre possível melhoria. Coloquei try-except no código, uma vez que há a possibilidade de o usuário não digitar número e uma forma de sair do programa durante a execução.

import random
import sys

def jogar():
    print('*'*40)
    print('{:*^40}'.format("Bem-vindo ao jogo de advinhação!"))
    print('*'*40)

    numero_secreto_ini = 1
    numero_secreto_end = 100

    numero_secreto = random.randint(
        numero_secreto_ini,
        numero_secreto_end)

    total_de_tentativas = 0
    nivel = 0
    pontuacao = 1000

    while nivel not in [1, 2, 3]:
        print("Qual nível de dificuldade?")
        print("(1) Fácil (2) Médio (3) Difícil")
        print()
        try:
            nivel = int(input("Defina o nível: "))
            if nivel == 0:
                sys.exit()
            if nivel not in [1, 2, 3]:
                print("Digite apenas 1, 2 ou 3")
                print("Digite 0 para sair")
                print()
        except Exception as e:
            print("Digite apenas 1, 2 ou 3 para jogar")
            print("Digite 0 para sair")
            print()

    if nivel == 1:
        total_de_tentativas = 20
    elif nivel == 2:
        total_de_tentativas = 10
    else:
        total_de_tentativas = 5

    for rodada in range(1, total_de_tentativas + 1):
        print(f"Tentativa {rodada} de {total_de_tentativas}")
        try:
            chute = int(
                input(f"Digite um número entre {numero_secreto_ini} e {numero_secreto_end}: ")
            )
            print()
            print(f"Você digitou {chute}")
            print()

            if chute < numero_secreto_ini or chute > numero_secreto_end:
                print(f"Você deve digitar um número entre {numero_secreto_ini} e {numero_secreto_end}!")
                continue

            acertou = chute == numero_secreto
            menor = chute < numero_secreto
            maior = chute > numero_secreto
            pontos_perdidos = abs(chute-numero_secreto)

            if not acertou:
                pontuacao -= pontos_perdidos
            if acertou:
                print(f"Você acertou e fez {pontuacao} pontos!")
                print()
                break
            elif menor:
                print("Você errou! O seu chute foi menor do que o número secreto")
                print()
            elif maior:
                print("Você errou! O seu chute foi maior do que o número secreto")
                print()
        except Exception as e:
            print("Erro:", e)
    if not acertou:
        print(f"O número secreto era {numero_secreto} e você fez {pontuacao} pontos")
    print("Fim do jogo")

if __name__ == "__main__":
    jogar()

Bom sucesso a todos!

Programa completo conforme finalizado o curso em https://github.com/italoyuri/jogos

2 respostas
solução!

Olá Italo, tudo bem com você?

Meus parabéns pelo desenvolvimento do código e pela implementação. Adicionar a validação da entrada do usuário é muito importante, assim evitamos erros no decorrer da execução do nosso código e temos a possibilidade de informar o usuário que o mesmo está inserindo um dado não esperado, sem a necessidade de finalizar a execução do código.

Sua participação no projeto VitrineDev disponibilizando seus projetos para que os demais alunos e alunas possam conhecer mais sobre o seu trabalho e desenvolvimento é muito importante para o crescimento da comunidade Alura e além disso, aperfeiçoa o seu portfólio pessoal. Continue com essa dedicação e empenho sempre.

Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos.

Obrigado, Felippe!