How to repeat a code?

Asked

Viewed 1,944 times

1

Hello I am new in python and I would like to know with respect the code soon after its termination. Since there are several If and Else in the code.

Just in case here’s my code.

print ("\n\t       CALCULADORA v 1.0\n")

escolha = str (input ("escolha a operação:\n (soma, subtraçao, divisao, multiplicaçao)\n\n"))

if escolha == "soma":
print ("==========================================")
print ("\t\t   SOMA")
print ("==========================================\n\n")

num1 = int (input ("Digite o primeiro número.\n"))
num2 = int (input ("\nDigite o segundo número.\n"))
resul= num1 + num2

print ("resultado:", resul)

else:
if escolha == "subtraçao":
    print ("==========================================")
    print ("\t\t SUBTRAÇÃO")
    print ("==========================================\n\n")

    num1 = int (input ("Digite o primeiro número.\n"))
    num2 = int (input ("\nDigite o segundo número.\n"))
    resul= num1 - num2

    print ("resultado:", resul)

else:

    if escolha == "divisao":
        print ("==========================================")
        print ("\t\t  DIVISÃO")
        print ("==========================================\n\n")

        num1 = int (input ("Digite o primeiro número.\n"))
        num2 = int (input ("\nDigite o segundo número.\n"))
        resul= num1 / num2

        print ("resultado:", resul)

    else:

        if escolha == "multiplicacao":
            print ("==========================================")
            print ("\t\tMULTIPLICAÇÃO")
            print ("==========================================\n\n")

            num1 = int (input ("Digite o primeiro número.\n"))
            num2 = int (input ("\nDigite o segundo número.\n"))
            resul= num1 * num2

            print ("resultado:", resul)
  • Sorry the code got all messed up I can’t fix

2 answers

2

I have taken the liberty of making some amendments, as there is much unnecessary repetition.

  • First, I created a named list operacoes, contains the operations allowed to validate the user input.

    operacoes = {'soma', 'subtração', 'divisão', 'multiplicação'}
    
  • I created the variable _repete with the value 42, so that instead of polluting the code with multiple characters ========... just multiply-Ló by the value of the variable: "=" * _repete

  • To repeat use while

  • To avoid repeating code for each title, we took the user’s choice and turned into Uppercase

    escolha.upper()
    
  • The ifs stayed only to verify which operation was chosen and performs it.

    if escolha == 'soma':
        resul= num1 + num2
    elif escolha == 'subtração':
        resul= num1 - num2
    elif escolha =='divisão':
        resul= num1 / num2
    else:
        resul= num1 * num2
    
  • If the choice made by the user is not one of the operations in the list or the option get out of, will return the message INVALID OPTION!.

    print("\nOPÇÃO INVÁLIDA!\n")
    

The complete code:

operacoes = {'soma', 'subtração', 'divisão', 'multiplicação'}
_repete = 42
print ("\n\t       CALCULADORA v 1.0\n")

while True:
    escolha = str (input ("escolha a operação:\n(soma, subtração, divisão, multiplicação)\n\n"))
    if escolha == 'sair':
        break
    elif escolha in operacoes:
        print("=" * _repete)
        print("\t\t", escolha.upper())
        print("=" * _repete, "\n\n")

        num1 = int (input ("Digite o primeiro número.\n"))
        num2 = int (input ("\nDigite o segundo número.\n"))

        if escolha == 'soma':
            resul= num1 + num2
        elif escolha == 'subtração':
            resul= num1 - num2
        elif escolha =='divisão':
            resul= num1 / num2
        else:
            resul= num1 * num2

        print ("resultado:", resul, "\n")
    else:
        print("\nOPÇÃO INVÁLIDA!\n")

See working in repl it.

0

Use a while to run the repetition with a parameter to stop the repetition, I’m posting your code being executed inside a While that repeats the code until when the user chooses the output option by typing 'q', I’m posting his own code without refactoring, but you should nest less IF’s using ELIF’s instead of nesting ELSE’s and IF’s.

Here’s your code inside While:

print("\n\t CALCULADORA v 1.0\n")
print("Digite 'q' a qualquer momento para sair do programa")
while True:
    escolha = str(input("escolha a operação:\n (soma, subtraçao, divisao, multiplicaçao)\n\n"))
    if escolha == 'q':
        break
    elif escolha == "soma":
        print("==========================================")
        print("\t\t SOMA")
        print("==========================================\n\n")

        num1 = int(input("Digite o primeiro número.\n"))
        num2 = int(input("\nDigite o segundo número.\n"))
        resul= num1 + num2

        print("resultado: ", resul)

    else:

        if escolha == "subtraçao":
            print("==========================================")
            print("\t\t SUBTRAÇÃO")
            print("==========================================\n\n")

            num1 = int (input ("Digite o primeiro número.\n"))
            num2 = int (input ("\nDigite o segundo número.\n"))
            resul= num1 - num2

            print ("resultado:", resul)

        else:

            if escolha == "divisao":
                print ("==========================================")
                print ("\t\t  DIVISÃO")
                print ("==========================================\n\n")

                num1 = int (input ("Digite o primeiro número.\n"))
                num2 = int (input ("\nDigite o segundo número.\n"))
                resul= num1 / num2

                print ("resultado:", resul)

            else:

                if escolha == "multiplicacao":
                    print ("==========================================")
                    print ("\t\tMULTIPLICAÇÃO")
                    print ("==========================================\n\n")

                    num1 = int (input ("Digite o primeiro número.\n"))
                    num2 = int (input ("\nDigite o segundo número.\n"))
                    resul= num1 * num2

                    print ("resultado:", resul)

And refactoring the code would look like this:

print("\n\t CALCULADORA v 1.0\n")
while True:
    print("Digite 'q' a qualquer momento para sair do programa")
    escolha = str(input("escolha a operação:\n (soma, subtraçao, divisao, multiplicaçao)\n\n"))
    if escolha == 'q':
        break
    num1 = input("Digite o primeiro número.\n")
    if num1 == 'q':
        break
    num1 = int(num1)
    num2 = input("\nDigite o segundo número.\n")
    if num2 == 'q':
        break
    num2 = int(num2)
    if escolha == "soma":
        print("==========================================")
        print("\t\t SOMA")
        print("==========================================\n\n")
        resul= num1 + num2
        print("resultado: ", resul)

    elif escolha == "subtraçao":
        print("==========================================")
        print("\t\t SUBTRAÇÃO")
        print("==========================================\n\n")

        resul= num1 - num2

        print ("resultado:", resul)

    elif escolha == "divisao":
        print ("==========================================")
        print ("\t\t  DIVISÃO")
        print ("==========================================\n\n")
        resul= num1 / num2

        print ("resultado:", resul)

    else:
        print ("==========================================")
        print ("\t\tMULTIPLICAÇÃO")
        print ("==========================================\n\n")

        resul= num1 * num2

        print ("resultado:", resul)

Much better using "Elif" right!?

  • Hi Rapahel: your tip would be even more useful if you taught the author of the question to use functions!

Browser other questions tagged

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