How to improve my code? [closed]

-4
from random import randint
from time import sleep
import sys

def processar():
    print("Processando...")
    sleep(3)
    print()

def voltar():
    print("1 - Voltar ao inicio")
    print("2 - Sair")
    while True:
        opcao = int(input("> "))
        if (opcao == 1):
            jogo()
        elif (opcao == 2):
            break
        else:
            print("Opcao invalida!")

def jogo():

    computador = randint(0, 5)

    jogador = int(input("Tente adivinhar o número no qual eu pensei (de 0 à 5): "))
    processar()

    while jogador < 0 or jogador > 5:
        jogador = int(input("Opa! Você só pode digitar números de 0 até 2. Tente novamente: "))
        processar()

    if computador == jogador:
            print("Você acertou!!! O número que pensei é: {}".format(computador))
            voltar()
    else:
        print("Você errou. Eu pensei no número {} e você digitou o: {}" .format(computador, jogador))
        voltar()
jogo()
voltar()
    
asked by anonymous 27.08.2017 / 17:51

1 answer

2
  • I think your processar() function is useless. I'll get her out.

  • Its variables computador and jogador are actually the number invented by the computer and the player's attempt. I suggest calling them escolhido and tentativa .

  • Your message " Você só pode digitar números de 0 até 2. " was actually meant to be 0-5.

  • Its function jogo() calls voltar() which calls jogo() . This will not work and creates a complicated recursion. The result is that choosing the sair() option does not always exit. Your program will be pretty confused by this. The solution is to first transform voltar() into a menu() function and never call menu() or jogo() from within the jogo() function.

  • The if and else of the jogo() function have different indentation levels.

  • Fixing all this, your code looks like this:

    from random import randint
    import sys
    
    def menu():
        jogo()
        while True:
            print("1 - Voltar ao inicio")
            print("2 - Sair")
            opcao = int(input("> "))
            if (opcao == 1):
                jogo()
            elif (opcao == 2):
                break
            else:
                print("Opcao invalida!")
    
    def jogo():
        escolhido = randint(0, 5)
        tentativa = int(input("Tente adivinhar o número no qual eu pensei (de 0 à 5): "))
    
        while tentativa < 0 or tentativa > 5:
            jogador = int(input("Opa! Você só pode digitar números de 0 até 5. Tente novamente: "))
    
        if escolhido == tentativa:
            print("Você acertou!!! O número que pensei é: {}".format(escolhido))
        else:
            print("Você errou. Eu pensei no número {} e você digitou o: {}" .format(escolhido, tentativa))
    
    menu()
    
        
    27.08.2017 / 19:04