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

Estrutura de Código e os IFs

import random

print("Bem vindo ao jogo de adivinhação")

numero_secreto = random.randrange(1, 101)
tentativas = 0

print("Qual nível de dificuldade?")
print("(1) Fácil (2) Médio (3)Difícil ")

nivel = int(input("Defina um nível: "))

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

for rodada in range(1, tentativas + 1):
    print("Tentativa {} de {}".format(rodada, tentativas))
    chute = input("Digite um número entre 1 e 100 ")
    print("O seu chute foi: " + chute)
    chute = int(chute)

    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!!")
        break
    else:
        if(maior):
            print("Que pena você errou o número secreto é menor que o seu chute")
        elif(menor):
            print("Que pena você errou o número secreto é maior que o seu chute")

    rodada = rodada + 1

print("O número secreto era: {}".format(numero_secreto))
print("fim de jogo")

Tem algo que está me incomodando muito mesmo nesse código do jogo de adivinhação, que são os ifs. É correto sempre que tivermos que validar algo, como no exemplo, colocarmos ifs?

Tipo vamos pensar, sempre que colocarmos um novo parâmetro ou uma nova regra de negocio teremos que criar mais um if ou elif, e agora se tivermos 100 regras diferentes para implementar, seria correto colocar cada uma delas dentro de um if/elif?

E teria algum modo de fazer que esse jogo de o mesmo resultando, porém sem ter que usar os ifs ou até diminuindo eles?

2 respostas
solução!

Creio que a utlização dos ifs dessa forma é apenas para facilitar o entendimento do assunto sem se adentrar em aspectos mais avançados das linguagens. Em um sistema real existem diversos Design Patterns (Padrões de Projetos) que podem ser aplicados e visam resolver esses e outros problemas recorrentes no desenvolvimento de aplicações.

Ata obrigado