1
resposta

Resolução diferente ao passado na aula (parte da mensagem qdo rodada == total_de_tentativas).

Invês de inserir o código abaixo dentro de cada 'if(maior)' e 'elif(menor)' conforme ao passado na aula, deixei ele no nível acima dentro do else, referente ao 'if(acertou)'.

if(rodada == total_de_tentarivas):
    print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))

O código ficou dessa forma, não sei se tem algum problema ou se fere alguma das boas práticas de programação.

PS.: pelo menos nos teste que fiz deu tudo certo!

## Resto do código acima

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

        if(maior):
            print("Você errou, o seu chute foi MAIOR do que o número secreto.")
        elif(menor):
            print("Você errou, o seu chute foi MENOR do que o número secreto.")

        if(rodada == total_de_tentarivas):
            print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))

## Resto do código abaixo

Segue código completo:

import random

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

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


print("(1) Fácil (2) Médio (3) Difícil")
nivel = int(input("Defina o nível: "))

if(nivel == 1):
    total_de_tentarivas = 20
elif(nivel == 2):
    total_de_tentarivas = 10
else:
    total_de_tentarivas = 5

for rodada in range(1, total_de_tentarivas + 1):
    print("Tentariva {} de {}".format(rodada, total_de_tentarivas))
    chute_str = input("Digite um número entre 1 a 100: ")
    print("Você digitou " , chute_str)
    chute = int(chute_str)

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

    acertou = chute == numero_secreto
    maior   = chute > numero_secreto
    menor   = chute < numero_secreto

    if(acertou):
        print("Você acertou")
        print("A atingiu {} pontos!".format(pontos))
        break
    else:
        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos

        if(maior):
            print("Você errou, o seu chute foi MAIOR do que o número secreto.")
        elif(menor):
            print("Você errou, o seu chute foi MENOR do que o número secreto.")

        if(rodada == total_de_tentarivas):
            print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))


print("Fim do jogo")
1 resposta

Creio que não exista nenhum problema nessa implementação, pois o evento complementar ao acertou é errar para mais ou menos, isto é, o único resultado é errar, caso o usuário não insira o valor correto do chute. Porém desaconsalharia a declarar qualquer variável dentro do bloco else ou elif, pois isso poderia causar retrabalho ao se escalonar essa algoritmo, porque nem sempre vai existir somente um único tipo de evento complementar em um universo de possibilidades.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software