quinta-feira, 22 de outubro de 2009

Mini Teste # 1

As questões do mini teste #1 tinham um graus de dificuldade baixo. Aqui vai um esboço de solução.

Questão 1.

As cadeias de caracteres e as listas são tipos de objectos. Identifique de forma clara e sintética as suas semelhanças e as suas diferenças.

Resposta:
As cadeias de caracteres e as listas são colecções ordenadas de objectos. As listas são heterogéneas e mutáveis. As cadeias de caracteres são homogéneas e imutáveis.


Questão 2.

Explique o que acontece de modo claro, sintético e rigoroso, quando executa o comando: a= 5.

Resposta:
O nome "a" caso não exista é criado e passa a pertencer ao espaço de nomes corrente. Este nome fica associado ao objecto 5 através da identidade deste.


Questão 3.

O programa da listagem abaixo pretende criar e devolver a cópia de uma dada lista. No entanto não funciona na esmagadora maioria dos casos, podendo mesmo dar erro na sua execução}. Identifique o tipo do erro que o sistema comunica e explique a sua razão.



def minha_copia(lista):
"""
Fabrica a cópia da lista "lista".
"""
copia = []
for i in range(len(lista)):
copia = copia.append(lista[i])
return copia

Resposta:
O método append devolve como valor o objecto "None". Assim, depois da primeira execução dentro do ciclo "copia" fica com o valor "None", pelo que na segunda iteração dá erro: na segunda pasagem o nome cópia estado associado ao objecto None, que não tem o método "append" definido. Para corrigir basta retirar a atribuição dentro do ciclo.


Questão 4.

Desenvolva um programa que dada uma lista de números devolva a soma dos seus números pares e a soma dos seus números ímpares. A listagem abaixo ilustra o que se pretende.



>>> lst = [1,4,7,9,3,2,8,5,6]
>>> # ---> Aqui o seu programa de nome pares_impares.
>>> pares_impares(lst)
(20, 25)
>>>


Resposta:

def pares_impares(lista):
"""
Devolve o valor da soma dos números pares e o valor da soma
dos números ímpares.
"""
pares = 0
impares = 0
for i in range(len(lista)):
if lista[i] % 2 == 0:
pares = pares + lista[i]
else:
impares = impares + lista[i]
return pares,impares

2 comentários:

  1. Querido prof, ja agora, se não fosse muito incomodo, gostaria muito de ver as soluções da "segunda versão" do mini-teste...

    ResponderEliminar