Duda con ciclo for?

Chema Cortes py en ch3m4.org
Lun Mayo 4 02:44:11 CEST 2009


El Saturday 02 May 2009 17:10:26 Jesse escribió:
> Hola lista,
>
> Deseo hacer lo siguiente, ejecutar un ciclo for donde yo en algun punto
> dada determinada condicion el la variable de iteracion se devuelva y
> empiece a iterar desde ese punto, ejemplo estoy haciendo un ciclo del 0 al
> 10, y voy en 5 pero dado cierto evento dice q debe devolverse al 2 y
> continuar iterando desde ahi, lo q me esta pasando es q en ese momento me
> itera el 2 pero en la siguente iteracion me cambia a 7 en vez de seguir 3,4
> ........ , lo unico q hace es sustituir el valor, un ejemplo resumido en
> codigo de lo q me esta pasando es esto
>
> for i in range(0,10):
>     a = raw_input(":  ")
>     if a == "si":
>         i = 2
>     print i
>
> raw_input()
>
> Agradezco cualquier idea con respecto al tema .... de antemano gracias

Seguramente, lo más simple es un bucle while. Pero si quieres algo más 
rebuscado, en las notas sobre las novedades de python 2.5 se habla de la 
nueva *expresión* "yield" y se acompaña de un fragmento de código que puede 
servirte:

def counter (maximum):
    i = 0
    while i < maximum:
        val = (yield i)
        # If value provided, change counter
        if val is not None:
            i = val
        else:
            i += 1

Su uso sería algo así

it=counter(10)
for i in it:
   a = raw_input(":  ")
   if a == "si":
       i=it.send(2)
   print i


New Generator Features:
<http://www.python.org/doc/2.5.4/whatsnew/pep-342.html>




------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.python.org/pipermail/python-es/attachments/20090504/b0a15b1c/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es