1
resposta

Orientação para diminuir os Ifs

Boa tarde, comunidade!

To achando meu código com muitos Ifs, alguma sugestação de como eu poderia diminuir essa quantidade?

agradeço!

1. import random # IMPORTANDO A FUNÇÃO PARA GERAR NÚMEROS ALEATÓRIOS.
2. 
3. print("|*******************|") # MOSTRA O INICIO DO JOGO.
4. 
5. print(" JOGO DE ADIVINHAÇÃO") # MOSTRA O INICIO DO JOGO.
6. 
7. print("|*******************|") # MOSTRA O INICIO DO JOGO.
8. 
9. numero_secreto = round(random.random() * 10) # GERANDO NÚMERO SECRETO ATRAVÉS DA FUNÇÃO RANDOM E ARREDONDANDO COM A FUNÇÃO ROUND, MULTIPLICANDO O RESULTADO DO RANDOM POR 10 PARA OBTER UM NÚMERO RANDOMICO ENTRE 0 E 10.
10. 
11. tentativas = 0 # NÚMERO DE TENTATIVAS PARA ACERTAR O NÚMERO SECRETO.
12. print("\nNÚMERO SECRETO ESTÁ ENTRE 0 E 10")
13. print("\nQual nível de dificuldade?") # MENSAGEM INFORMATIVA
14. print("\n(1) Fácil = 10 Tentativas (2) Médio = 5 Tentativas (3) Difícil = 2 Tentativas\n") # MENSAGEM INFORMANDO PARA O JOGADOR QUAL NÍVEL ELE PODE ESCOLHER.
15. 
16. 
17. while True: # ENQUANTO A CONDIÇÃO NÃO FOR SATISFEITA O LOOPING CONTINUA ATÉ QUE SEJA DIGITADO 1, 2 OU 3.
18.     nivel = int(input("Qual nível deseja jogar: ")) # INPUT PARA OBTER O NIVEL DESEJADO
19.     if nivel == 1: # CONDIÇÃO A SER SATISFEITA
20.         print("INICIANDO JOGO") # MENSAGEM INFORMATIVA
21.         break # INTERROMPE O LOOPING
22.     elif nivel == 2: # CONDIÇÃO A SER SATISFEITA
23.         print("INICIANDO JOGO") # MENSAGEM INFORMATIVA
24.         break # INTERROMPE O LOOPING
25.     elif nivel == 3: # CONDIÇÃO A SER SATISFEITA
26.         print("INICIANDO JOGO") # MENSAGEM INFORMATIVA
27.         break # INTERROMPE O LOOPING
28. 
29. if (nivel == 1): # CONDIÇÃO COMPARATIVA
30.     tentativas = 10 # ALTERANDO O NÚMERO DE TENTATIVAS
31.         
32. elif (nivel == 2): #CONDIÇÃO COMPARATIVA
33.     tentativas = 5 # ALTERANDO O NÚMERO DE TENTATIVAS
34.     
35. elif (nivel == 3): #CONDIÇÃO COMPARATIVA
36.     tentativas = 2 # ALTERANDO O NÚMERO DE TENTATIVAS
37. 
38. for rodada in range(1, tentativas + 1): # INICIO DO LAÇO FOR.
39.   
40.   print("Tentativa número: {} de {}".format(rodada, tentativas)) # MOSTRA O NÚMERO DE RODADAS QUE AINDA TEM E QUANTAS TENTATIVAS.
41.   
42.   chute = int(input("Qual número secreto? ")) # INPUT PARA CAPTURAR O NÚMERO DIGITADO PELO JOGADOR.
43.   
44.   if chute < 1 or chute > 100: # O CHUTE SÓ PODE ESTAR ENTRE 1 E 100.
45.       
46.       print("Você deve escolher um número entre 1 e 100") # MENSAGEM GERADA PARA O JOGADOR QUE DIGITAR QUALQUER VALOR FORA DA CONDIÇÃO.
47.   
48.   if (chute == numero_secreto): # CONDIÇÃO COMPARANDO O CHUTE DO JOGADOR COM O NÚMERO SECRETO GERADO.
49.     
50.     print("\nVocê acertou o numero secreto!") # MENSAGEM DE ACERTO
51.     
52.     break # SE O JOGADOR ACERTAR O NÚMERO UM BREAK QUEBRA O LAÇO E VAI PARA A PRÓXIMA LINHA DE CÓDIGO.
53.   
54.   else: # SE ERRAR AS MENSAGENS A SEGUIR SERÃO EXIBIDAS.
55.     
56.     print("Você errou!") # MENSAGENS INFORMANDO QUE O CHUTE NÃO FOI IGUAL AO NÚMERO GERADO.
57.     
58.     if (chute > numero_secreto): # COMPRANDO O CHUTE COM O NÚMERO GERADO.
59.       
60.       print("Vc chutou um numero maior\n") # INDICANDO PARA O JOGADOR QUE O CHUTE FOI MAIOR QUE O NÚMERO GERADO.
61. 
62.     else: # SE NÚMERO NÃO FOI MAIOR, TEMOS O ELSE COM A MENSAGEM DE QUE O NÚMERO FOI MENOR QUE O CHUTE.
63.       
64.       print("Vc chutou um numero menor\n") # INDICANDO PARA O JOGADOR QUE O CHUTE FOI MENOR QUE O NÚMERO GERADO.
65. 
66. print("\nO número secreto era", numero_secreto) # MOSTRANDO PARA O JOGADOR QUAL É O NÚMERO SECRETO.
67. 
68. print("\nFIM DE JOGO!") # MENSAGEM QUE INDICA O FIM DO JOGO.
1 resposta

Olá Wallemberg!

Continuando seus estudos, você vai aprender a programar Python de forma orientada a objetos. Lá você irá aprender diversas técnicas e recursos que te permitirão a diminuir IF's e criar um código mais enxuto.

Depois de aprender, retorne a este código e tente aplicar os novos conhecimentos. :)

Sucesso!

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