quarta-feira, 18 de novembro de 2015

Teste #2 - Turma TP2

Pergunta 1
Diga o que são objectos mutáveis e exemplifique.
Resposta: São objectos que podem ter o seu valor alterado sem alterar a sua identidade. As listas são um exemplo.

b) Analise a listagem seguinte e diga, justificando, o que vai aparecer no lugar dos pontos de interrogação.
1.>>> x_2 = ([1,2,3],[4,5,6])
2.>>> x_2[0][1] = 'b'
3.>>> x_2
4.???             --> ([1,'b',3],[4,5,6])
5.>>> x_2[0] = (7,8,9)
6.???            --> Dá erro de atribuição. Não  se pode alterar, por atribuição,  o valor de um tuplo
Pergunta 2
Pretendia-se obter o valor aproximado da função geo(r) igual ao somatório com i a variar de 0 até infinito de 1/(r^i). Valorizava-se a consideração da precisão.
Versão sem precisão (soma de n termos):
1.def geo(r,n):
2.    res = 0
3.    for i in range(n):
4.        res += 1/pow(r,i)
5.    return res
Agora uma versão com a precisão a ser definida.
01.def geo_b(r,prec):
02.    erro = 1
03.    res = 0
04.    n = 0
05.    while erro > prec:
06.        aux = res
07.        res += 1/pow(r,n)
08.        erro = abs(aux - res)
09.        n += 1
10.    return res
Esta solução funciona com base na consideração da diferença de dois valores consecutivos. Para este tipo de séries infinitas isso não causa problema. Podemos mesmo usar outra solução:
1.def geo_c(r,prec):
2.    i = 1
3.    termo = res = 1
4.    while termo > prec:
5.        termo = 1/pow(r,i)
6.        res += termo
7.        i += 1
8.    return res
Pergunta 3
Pedia-se para transformar uma imagem a preto e branco, representada por uma lista de listas de uns (preto) e zeros (branco), na sua imagem no espelho, sem destruir a imagem original. Uma pequena reflexão diz-nos que é suficiente inverter a imagem, linha a linha.
1.def espelho(imagem):
2.    nova_imagem = []
3.    for linha in imagem:
4.        nova_linha = linha[:]
5.        nova_linha.reverse()
6.        nova_imagem.append(nova_linha)
7.    return nova_imagem

Sem comentários:

Enviar um comentário