1
resposta

Código final do curso Python 3 parte 1

No código do professor, faltou incluir uma prevenção a erros nos inputs de nível e chutes, quando inseria um caractere que não fosse um número inteiro, o programa encerrava (crash).

from logging import exception
import random
import string

def jogar():

print("Bem-vindo ao joguinho em Python")

numeroSecreto = random.randrange(1,101)
tentativas = 0
pontos = 1000


print("Selecione um nivel:")
print("1- Facil 2- Medio 3- Dificil")

while True:
    try:
        nivel = int(input("Defina o nivel: "))
        while(nivel < 1 or nivel > 3):
            print("Erro: a dificuldade é de 1 a 3...")
            nivel = int(input("Defina o nivel: "))
        break
    except Exception as e:
            print("Apenas digite numeros inteiros...")

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


for rodada in range (1, tentativas):
    print("Tentativa {} de {}".format(rodada, tentativas))

    while True:
        try:
            chute = int(input("Insira um numero: "))
            while chute < 1 or chute > 100:
                print("Chute entre 1 e 100...")
                chute = int(input("Insira um numero: "))

                print(f'Voce inseriu', chute)

            break
        except Exception as e:
            print("Apenas digite numeros...")

    acertou = chute == numeroSecreto
    maior = chute > numeroSecreto
    menor = chute < numeroSecreto      


    if(acertou):
        print("Voce acertou e fez {} pontos!".format(pontos))
        print("Fim do jogo!")
        break
    else:
        print("Voce errou!")

    if(maior):
        print("Seu chute foi maior que o numero secreto")

    elif(menor):
        print("Seu chute foi menor que o numero secreto")

    if(chute != True):
        chute = tentativas - 1


        pontosPerdidos = abs(numeroSecreto - chute)
        pontos = pontos - pontosPerdidos

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

Olá Filipe, tudo bem com você?

Meus parabéns pela implementação do teste da entrada do usuário, fico feliz que tenha compartilhado com a comunidade do fórum Alura.

Testando o seu código vi que ele apresentava uma mensagem de erro de indentação, esse erro acontece devido não termos um código dentro da função jogar(), as linhas de código que estão abaixo, não estão dentro da função devido a um erro de indentação, para corrigir basta colocar 4 espaços antes das linhas ou usar o tab.

Por boa prática, é recomendado retirar a importação dos módulos que não estão sendo utilizados no nosso código, nesse caso é recomendado retirar as seguintes linhas: from logging import exception e import string.

Seguindo o conceito de retirar do código o que não é utilizado, temos a linha de código: except Exception as e:, no código não à o uso do apelido e (quando usamos o as estamos criando um apelido para algo) sendo recomendado retirar essa parte também, devido não está sendo utilizada.

Deixo abaixo o código com as modificações feitas para comparação.

import random


def jogar():
    print("Bem-vindo ao joguinho em Python")

    numeroSecreto = random.randrange(1, 101)
    tentativas = 0
    pontos = 1000

    print("Selecione um nivel:")
    print("1- Facil 2- Medio 3- Dificil")

    while True:
        try:
            nivel = int(input("Defina o nivel: "))
            while (nivel < 1 or nivel > 3):
                print("Erro: a dificuldade é de 1 a 3...")
                nivel = int(input("Defina o nivel: "))
            break
        except Exception:
            print("Apenas digite numeros inteiros...")

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

    for rodada in range(1, tentativas):
        print("Tentativa {} de {}".format(rodada, tentativas))

        while True:
            try:
                chute = int(input("Insira um numero: "))
                while chute < 1 or chute > 100:
                    print("Chute entre 1 e 100...")
                    chute = int(input("Insira um numero: "))

                    print(f'Voce inseriu', chute)

                break
            except Exception:
                print("Apenas digite numeros...")

        acertou = chute == numeroSecreto
        maior = chute > numeroSecreto
        menor = chute < numeroSecreto

        if (acertou):
            print("Voce acertou e fez {} pontos!".format(pontos))
            print("Fim do jogo!")
            break
        else:
            print("Voce errou!")

        if (maior):
            print("Seu chute foi maior que o numero secreto")

        elif (menor):
            print("Seu chute foi menor que o numero secreto")

        if (chute != True):
            chute = tentativas - 1

            pontosPerdidos = abs(numeroSecreto - chute)
            pontos = pontos - pontosPerdidos


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

Para aprimorar o seu aprendizado sobre indentação, recomendo a leitura do seguinte artigo:

O artigo está em inglês, caso tenha dificuldades com o idioma recomendo o uso do tradutor do navegador.

Deixo aqui também uma recomendação de um curso da Alura que aborda sobre as boas práticas de programação em Python.

Em caso de dúvidas, coloco-me à disposição.

Abraços e bons estudos.