[pyar] Devolver 2 valores generados por función yield
Matias Graña
matias.alejo en gmail.com
Lun Oct 6 23:19:32 ART 2014
-- M
El oct 5, 2014 6:26 p.m., "Mati Barriento" <elmatibarriento en gmail.com>
escribió:
>
> Querida lista, tengo esta funcion que genera "longer" cantidad de cifras
de Pi
> def make_pi(longer):
> i = -1
> q, r, t, k, m, x = 1, 0, 1, 1, 3, 3
> while i < longer:
> if 4 * q + r - t < m * t:
> i += 1
> yield m
> q, r, t, k, m, x = 10*q, 10*(r-m*t), t, k, (10*(3*q+r))//t -
10*m, x
> else:
> q, r, t, k, m, x = q*k, (2*q+r)*x, t*x, k+1,
(q*(7*k+2)+r*x)//(t*x), x+2
>
No lo probé, pero por lo que veo, si quitás las variables longer e i tenés
un generador infinito:
def make_pi():
q, r, t, k, m, x = 1, 0, 1, 1, 3, 3
while True:
if 4 * q + r - t < m * t:
yield m
q, r, t, k, m, x = 10*q, 10*(r-m*t), t, k, (10*(3*q+r))//t -
10*m, x
else:
q, r, t, k, m, x = q*k, (2*q+r)*x, t*x, k+1,
(q*(7*k+2)+r*x)//(t*x), x+2
Perdón si quedo mal la indentación, estoy con el celular y es difícil ver
bien los espacios.
Después de eso, cualquiera de las soluciones que te dieron funcionan.
Pregunta al margen: de dónde salió el algoritmo?
> Lo que necesito es consumir 2 veces la funcion para devolver un par de 2
cifras, es decir: '14', '15' etc, y asi la cantidad que "longer" haya
definido (o longer x2)
>
> trate de:
> x = next(make_pi(longer))
> y = next(make_pi(longer))
> return tuple([x,y])
>
> pero devolvia 2 veces el mismo numero....
>
> Uso python 3.3
>
> GRACIAS!!
>
>
Saludos,
Matías
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20141006/0b94766b/attachment.html>
More information about the pyar
mailing list