a) Diga o que entende por um objecto ser homogéneo. Indique um tipo de objectos que tem esta característica.
Resposta: quando as componentes do objecto têm quer ser todas do mesmo tipo. Exemplo: cadeias de caracteres.
b) Considere a seguinte listagem. Diga, justificando, o que vai aparecer no lugar dos pontos de interrogação.
>>> x_1 = [(1,2,3),(4,5,6)] >>> x_1[0] = (7,8,9) >>> x_1 ??? --> [(7,8,9),(4,5,6)] >>> x_1[0][1] = 'b' ??? --> Dá erro de atribuição. Não se pode alterar, por atribuição, o valor de um tuploPergunta 2
Implemente um programa que calcula o valor aproximado da função zeta(s) igual ao somatório quando n varia de 1 a infinito de 1/(n^s). Valorizava-se uma solução que controlasse o erro máximo da solução.
Sem considerar a precisão, a solução baseia-se em somar um certo número de termos:
def zeta(s,k):
res = 0
for n in range(1,k+1):
res += 1/pow(n,s)
return res
Considerando agora a precisão:
def zeta(s,prec):
erro = 1
res = 0
n = 1
while erro > prec:
aux = res
res += 1/pow(n,s)
erro = abs(aux - res)
n += 1
return res
Pergunta 3Dadas duas imagens a preto e branco, representadas por uma lista de listas de uns (preto) e zeros (branco), construa uma nova imagem, sem destruir as anteriores, que é preta (um) numa dada posição apenas quando as duas imagens de entrada são ambas pretas nessa posição. A solução mais básica:
def intersecta(img_1, img_2):
nova_img = []
for i in range(len(img_1)):
nova_linha = []
for j in range(len(img_1[0])):
if img_1[i][j] == 1 and img_2[i][j] == 1:
nova_linha.append(1)
else:
nova_linha.append(0)
nova_img.append(nova_linha)
return nova_img
Uma alternativa que evita o teste dentro dos ciclos:
def intersecta(img_1, img_2):
nova_img = []
for i in range(len(img_1)):
nova_linha = []
for j in range(len(img_1[0])):
nova_linha.append(img_1[i][j] * img_2[i][j])
nova_img.append(nova_linha)
return nova_img
Em vez do produto também se podia usar um AND lógico. Ainda outra alternativa seria construir uma imagem só com zeros e colocar a um sempre que o produto das outras for igual a um,, ou a soma for igual a 2. Fica para exercício.

Sem comentários:
Enviar um comentário