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.


1.def minha_copia(lista):
2. """
3. Fabrica a cópia da lista "lista".
4. """
5. copia = []
6. for i in range(len(lista)):
7.     copia = copia.append(lista[i])
8. 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.


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


Resposta:
01.def pares_impares(lista):
02. """
03. Devolve o valor da soma dos números pares e o valor da soma
04. dos números ímpares.
05. """
06. pares = 0
07. impares = 0
08. for i in range(len(lista)):
09.     if lista[i] % 2 == 0:
10.         pares = pares + lista[i]
11.     else:
12.         impares = impares + lista[i]
13. 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