Python - Trocando o valor de duas variáveis

"Faça um programa que pede dois inteiro e armazene em duas variáveis. Em seguida, troque o valor das variáveis e exiba na tela"



Temos duas variáveis: var1 e var2

Vamos fazer com que var2 receba o valor de var1:
var2 = var1

Agora vamos fazer com que var1 receba o valor de var2...epa!
Vai dar erro, pois eu MUDEI o valor de var2 no comando anterior!
O valor originalmente em var2 foi perdido quando fiz essa variável mudar de valor.

E agora, José?
Calma, você faz o Curso Python Progressivo, e vai aprender a resolver isso.
O segredo é: usar uma variável auxiliar, a aux

A função dar aux é guardar aquele primeiro valor contido em var2.
Então, a troca de valores se dá assim:

aux = var2
var2 = var1
var1 = aux

Faz sentido pra você?
Reflita e veja se entender perfeitamente, pois esse algoritmo de troca é MUITO importante!


    var1 = int(input('Primeiro numero: '))
    var2  = int(input('Segundo numero : '))

    print('Variavel 1: ',var1)
    print('Variavel 2: ',var2)
    print('Invertendo...')

    aux  = var2
    var2 = var1
    var1 = aux
    
    print('Variavel 1: ',var1)
    print('Variavel 2: ',var2)



4 comentários:

  1. n1 = input('primeiro: ')
    n2 = input('segundo: ')
    n3 = input('terceiro: ')
    #Formula para inverter dois ou mais numeros
    n1, n2, n3 == n3, n1, n2

    print(f'primeiro = {n3} e segundo = {n1} e terceiro = {n2}')

    ResponderExcluir
  2. v1 = input()
    v2 = input()

    # codigo responsavel por trocar os valores de uma variavel para a outra

    temp = v1 # registramos o valor de 'v1' em 'temp'
    v1 = v2 # sobrescrever 'v1' com o valor de 'v2'
    v2 = temp # sobrescrever 'v2' com o valor que era de 'v1'

    print('valor em v1:', v1)
    print('valor em v2:', v2)

    # Saída:
    valor em v1: 2
    valor em v2: 1

    ResponderExcluir
  3. galera, agora no python existe uma maneira mais recente.

    v1 = input()
    v2 = input()


    [v1, v2] = [v2, v1]

    print(v1)
    print(v2)

    #Esse código faz a troca para você

    ResponderExcluir