How to improve my code?

Asked

Viewed 81 times

-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()
  • Python is a very interesting language, there are many ways to do a single thing, then came out a term unique to Python which is pythonic code, to represent idiomatic code. Check out this question: https://answall.com/questions/192343/o-que%C3%A9-um-c%C3%B3digo-pyth%C3%B4nico

  • What problem are you trying to solve? What exactly do you want to improve?

  • What is the purpose of processar()?

1 answer

2

  1. I think your job processar() it’s no use. I’ll take it.

  2. Their variables computador and jogador are actually the number invented by the computer and the player’s attempt. I suggest calling them escolhido and tentativa.

  3. Your message "Você só pode digitar números de 0 até 2." actually it was supposed to be 0 to 5.

  4. Its function jogo() flame voltar() what call jogo(). This will not work and creates a complicated recursion. The result is that choosing the option sair() not always get out. Your program will get very confused by this. The solution is to first transform voltar() in a function menu() and never call menu() or jogo() from within the function jogo().

  5. The if and the else of function jogo() are with different levels of identation among themselves.

If you fix all this, your code will be 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()
  • Thanks for the help. I’m still a little lost in relation to calling functions. It lacked tbm some information and handling exceptions.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.