1. O que queremos dizer quando afirmamos que um operador, +, por exemplo, está sobrecarregado?
Resposta
Um operador diz-se sobrecarregado quando efectua diferentes operações em função do tipo dos objectos. No caso de + temos, por exemplo a operação de adição de números ou a de concatenação de cadeia de caracteres.
>>> 5 + 3
8
>>> ‘ab’ + +cd’
‘abcd’
2. Considere a seguinte sessão interactiva no interpretador de Python.
>>> import math
>>> x = sin(5)
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
NameError: name 'sin' is not defined
>>>
Explique de modo sintético mas rigoroso o que aconteceu.
Resposta
Ao importar o módulo matemático com import math, apenas o nome math fica guardado no espaço de nomes. Assim a operação sin é desconhecida do sistema a menos que se diga que faz parte do módulo matemático. Para tal temos que prefixar o nome da operação com o nome do módulo, com mostra a listagem. Não o fazendo dá-se um NameError.
>>> import math
>>> x = math.sin(5)
>>>
3. O programa da listagem abaixo pretende resolver o problema de duplicar os elementos numa lista. Por exemplo o que se pretende é:
>>> duplica([1,2,3])
[1,1,2,2,3,3]
>>>
def duplica(lista):
copia = lista[:]
for indice in range(len(lista)):
copia.insert(indice + 1,lista[indice])
return copia
No entanto não funciona. Identifique o tipo do erro que ocorre explicando a sua razão. Como podia corrigir o erro, embora usando a mesma ideia?
Resposta
O erro ocorre porque o programador não teve em linha de conta que a lista vai crescendo à medida que se inserem elementos. Funciona bem só para o primeiro elemento. A solução passa por ter esse aspecto em consideração como se indica na listagem.
def duplica_bem(lista):
copia = lista[:]
for indice in range(len(lista)):
copia.insert(2*indice + 1,lista[indice])
return copia
4. Desenvolva um programa que, dados um elemento numérico e uma lista de números, determina quantos elementos da lista são menores do que o número. A listagem abaixo ilustra o que se pretende.
>>> # ---> Aqui o seu programa de nome conta_menores.
>>> conta_menores(5,[2,8,6,5,3,2])
3
>>>
Resposta
Solução mais simples. Padrão acumulador (nome conta) a funcionar como contador. Percorre a lista pelo conteúdo. Para cada elemento da lista faz o teste e, caso se verifique a condição de ser menor, actualiza o contador.
def conta_menores(elem, lista):
conta = 0
for val in lista:
if val < elem:
conta = conta + 1
return conta
Sem comentários:
Enviar um comentário