0% acharam este documento útil (0 voto)
10 visualizações3 páginas

Python E05

O documento apresenta soluções para implementar geradores de números primos e tuplas RGB em Python, utilizando tanto funções tradicionais quanto expressões geradoras. Inclui também comparações de desempenho entre listas e geradores, além de uma função para ler arquivos CSV e retornar dados em formato de tuplas, com tratamento de erros. As soluções são apresentadas em forma de código, demonstrando a aplicação de conceitos de programação funcional.

Enviado por

alipio_resende
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
10 visualizações3 páginas

Python E05

O documento apresenta soluções para implementar geradores de números primos e tuplas RGB em Python, utilizando tanto funções tradicionais quanto expressões geradoras. Inclui também comparações de desempenho entre listas e geradores, além de uma função para ler arquivos CSV e retornar dados em formato de tuplas, com tratamento de erros. As soluções são apresentadas em forma de código, demonstrando a aplicação de conceitos de programação funcional.

Enviado por

alipio_resende
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Exercícios V

1. Implementar um gerador de números primos.

Solução:

def is_prime(n):

if n < 2:
return False

for i in xrange(2, n):


if not n % i:
return False
else:
return True

def prime_gen():
i=1
while True:
if is_prime(i): yield i
i += 1

# Teste: 100 primeiros primos


prime_iter = prime_gen()
for i in range(100):
print prime_iter.next()

Solução:

2. Implementar o gerador de números primos como uma expressão (dica: use o módulo itertools)

Solução:

from itertools import count

def is_prime(n):

if n < 2:
return False

for i in xrange(2, n):


if not n % i:
return False
else:
return True

primes = (i for i in count() if is_prime(i))


for i in range(100):
print [Link]()

3. Implementar um gerador que produza tuplas com as cores do padrão RGB (R, G e B variam de 0
a 255) usando xrange() e uma função que produza uma lista com as tuplas RGB usando range().
Compare a performance.

Solução:

def rgb_lst():
rgb = []
for r in range(256):
for g in range(256):
for b in range(256):
[Link]((r, g, b))
return rgb

def rgb_gen():
for r in xrange(256):
for g in xrange(256):
for b in xrange(256):
yield (r, g, b)

import time

tt = [Link]()
l = rgb_lst()
print [Link]() - tt

tt = [Link]()
for color in rgb_gen(): pass
print [Link]() - tt

4. Implementar um gerador que leia um arquivo e retorne uma lista de tuplas com os dados (o
separador de campo do arquivo é vírgula), eliminando as linhas vazias. Caso ocorra algum
problema, imprima uma mensagem de aviso e encerre o programa.

Solução:

def load_csv(fn):
try:
for line in file(fn):
new_line = [Link]()
if new_line:
yield tuple(new_line.split(','))
except:
print 'Ocorreu um erro ao ler o arquivo', fn
raise SystemExit

for line in load_csv('[Link]'):


print line

Você também pode gostar