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 resConsiderando 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 resPergunta 3
Dadas 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_imgUma 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_imgEm 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