How to repeat a code?

1

Hello, I'm new to python, and I'd like to hear the code right after its completion. Being that there are several If and else in the code.

Here's my code for questioning.

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)
    
asked by anonymous 02.01.2018 / 00:08

2 answers

1

I took the liberty of making some changes as there is a lot of unnecessary repetition.

  • First, I created a list named operacoes , it 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 several characters ========... just multiply it by the variable value: "=" * _repete

  • To repeat use while

  • In order for there to be no code repetition for each title, we take the choice of the user and turn it into Uppercase

    escolha.upper()
    
  • The ifs were just to check 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 user's choice is not one of the operations on the list or the exit option, it 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 at repl.it

    
03.01.2018 / 01:12
0

Use a while to execute the repeat with a parameter to stop the replay, I'm posting your code running within a While that repeats the code until the user chooses the output option by typing 'q', I'm posting your own code without refactoring, but you should nest fewer IFs using ELIF's instead of nesting ELSE's and IF's.

Here's your code inside the 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!?

    
02.01.2018 / 00:31