On 26/12/12 18:40, kausdiv wrote:
> Pues si, hay un modo pitoniano de escribir código.
> 
> Python tiene una riqueza y una naturalidad al escribir que define su
> propio modo de escribir.
> Verás cuando yo empecé (y aún me pasa), mis programas parecían escritos
> en java o c excepto que usaba lenguaje PY.
> Pero cambiando algunas cosas podría pasar por java, etc.
> 
> Para ilustrarlo mejor compara el código que ha escrito Chema con el mio
> del principio: (aunque ambos usen formas distintas de conseguir los primos)
> -----Codigo de Chema------
> 
> def primes(n):
> 
>     criba = {1,2}|set(range(3,n+1,2))
>     seq = (set(range(i+i,n+1,i)) for i in xrange(3,n+1,2) if i in criba)
>     for x in seq:
>         criba -= x
> 
>     return criba
> -----------El mio---------------
> def fprimos(n,x):
>     l=[]
>     for i in range(n,x):
>         isprime=1
>         for k in range(2,i):
>             if i % k ==0 and i<>k:
>                 isprime=0
>                 break
>         if isprime==1:
>             l.append(i)
>     return l
> ---------------------------------------
> 
> Como ves, hay una gran diferencia, a parte de estar más optimizado y
> usar recursos propios de PY.
> 
> Saludos.
> 

La mayor diferencia entre el codigo de Chema y el tuyo no está en que
uno sea más o menos 'Pythonico'. La mayor diferencia está en el
algoritmo, el empleó uno optimizado y muy conocido (criba de
Erastotenes) y tú empleas un algoritmo de fuerza bruta. Si ignoraras los
pares y buscaras solo hasta la raíz cuadrada mas uno, tu algoritmo seria
mas optimo. Aunque lo mejor es siempre documentarse y buscar un
algoritmo optimizado que para esta clase de problemas están mas que
resueltos. De todos modos, empleando tu mismo método, se puede
'reconstruir' para hacerlo mas 'pythonico', pero en este caso no podemos
compararlo con el de Chema, porque aunque el resultado es el mismo,
empleáis caminos distintos.

Yo te sugiero que la mejor manera de aprender el "estilo" de Python es
leer mucho código Python y ver los ejemplos utilizados en algún buen
libro sobre aprender Python.

-- 
joe di castro
http://joedicastro.com
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a