A atribuição de variáveis - Correção

Transferir em PDF

Exercício

Escrever uma série de instruções que altere o conteúdo de duas variáveis.

Análise do enunciado

É importante compreender corretamente a questão colocada. Para tal, o melhor é usar um exemplo.

Vamos imaginar que dois envelopes contêm uma certa quantia de dinheiro: um envelope azul contém uma nota de 20 euros e um envelope vermelho contém uma nota de 50 euros.

Podemos definir imediatamente duas variáveis indicando a quantia do envelope azul e a quantia do envelope vermelho.

azul = 20
vermelho = 50

Assim, vamos guardar o valor 20 na variável azul e o valor 50 na variável vermelho.

Desejamos agora trocar o conteúdo dos dois envelopes. A nota de 50 euros estará, portanto, no envelope azul e a nota de 20 euros no envelope vermelho.

A ideia é escrever em Python as instruções que realizam esta operação.

Resolução ingénua que não funciona

Temos então duas variáveis azul e vermelho cujo conteúdo queremos trocar.

Como sabemos a a atribuição de variáveis é feita com o sinal =, é muito tentador escrever:

vermelho = azul
azul = vermelho

image 1

Estamos no interpretador interativo.
O resultado não é o esperado pois o conteúdo de azul ainda é 20…

O que aconteceu?

Uma vez que escrevemos vermelho = azul, o conteúdo de azul, 20, foi armazenado em vermelho. O novo conteúdo de vermelho é então 20. Estamos perante o seguinte:

>>> azul
20
>>> vermelho
20

Assim que escrevemos azul = vermelho, o conteúdo de vermelho, que é agora 20, é armazenado em azul. O novo conteúdo de azul é então 20. Estamos perante o seguinte:

>>> azul
20
>>> vermelho
20

Este método não funciona, portanto, uma vez que a primeira instrução foi gravada por cima do conteúdo da segunda variável. Portanto, a ideia é armazenar o conteúdo da segunda variável algures antes de gravar por cima alguma coisa.

Surgimento de uma terceira variável

Assim, vamos, em primeiro lugar, armazenar o conteúdo da segunda variável numa terceira variável, a que daremos o nome de stock, para evitar perder a informação. Um pouco como se tivéssemos um terceiro envelope vazio no qual mantivéssemos a nota de 50 euros temporariamente.

Instrução 1 :

stock = vermelho

Agora que a informação está guardada, podemos colocar o conteúdo da primeira variável na segunda variável. No nosso exemplo, colocamos a nota de 20 euros no envelope vermelho (agora vazio).

Instrução 2 :

vermelho = azul

Só falta colocar a nota de 50 euros no envelope azul, ou seja, o conteúdo de stock na primeira variável.

Instrução 3 :

azul = stock

image 2

No fim destas instruções, o conteúdo dos dois envelopes deverá estar trocado.

Para terminar: um pequeno truque do próprio Python

De facto, a linguagem Python permite evitar passar por outra variável. É possível fazer a atribuição de duas variáveis na mesma instrução.

a,b = 2,3

Esta instrução permite armazenar 2 em a e 3 em b.

image 3

No nosso exemplo era então possível escrever o seguinte: azul,vermelho=vermelho,azul. Como as atribuições são feitas na mesma variável, o conteúdo de vermelho não é apagado, e o conteúdo das duas variáveis é trocado.

Um outro exercício

Escreva uma função media que tome uma lista de valores como argumento e que devolva a média aritmética desses valores.

Correção

image 4

Este exercício mostra a utilização prática de variáveis concretas dentro de uma função.

Algumas notas sobre a correção

image 5

Uma lista de números é uma sequência de números entre parênteses rectos separados por vírgulas. Assim, no script irá escrever:

image 6

A função len permite calcular o comprimento de uma lista (número de elementos).

image 7

A função sum é utilizado para calcular a soma dos elementos de uma lista, neste caso a soma dos valores introduzidos.