Python E05
Python E05
Solução:
def is_prime(n):
if n < 2:
return False
def prime_gen():
i=1
while True:
if is_prime(i): yield i
i += 1
Solução:
2. Implementar o gerador de números primos como uma expressão (dica: use o módulo itertools)
Solução:
def is_prime(n):
if n < 2:
return False
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