Como te dice david, debes trabajar con la reutilización de código, lo que te aconsejo es que coloques la rutina en una función y la llames dentro del while, de esta manera te será más sencillo modificarlo y es más legible.
El 18/01/2012 19:03, "Daπid" <[email protected]> escribió: > > Todo lo que vaya dentro de un while tiene que ir indentado, es la > forma que tiene Python de indicar el bloque a repetir. (Lo que en C > iría entre llaves). > > Fíjate además que has repetido exactamente el mismo código dos veces. > Eso, aparte de ser feo y difícil de modificar (lo que hagas lo tienes > que hacer dos veces), te sugiere que tiene que haber una forma de > hacerlo escribiéndolo una sóla vez. > > Si quieres pensarlo por ti mismo, sáltate el siguiente párrafo: > > preg='s' > while preg!=n: > blablalba > > > > ¡Suerte! > > 2012/1/19 Darío <[email protected]>: > > Hola lista, estoy empezando a aprender a programar en este lenguaje, y > > estoy teniendo un problema con la sentencia while. > > > > Es un ejercicio muy simple, pero para mí se me complicó un poco. La idea > > es dado un número natural (tiempo en segundos), convertirlo en días, > > horas, minutos y segundos. El problema me surge cuando quiero hacer un > > bucle con while de forma tal que se le pregunta si desea realizar otro > > cálculo, mientras lo ingresado sea distinto de n se sigue con otro > > valor, y si es n se sale del programa. > > > > El código es el siguiente: > > 1 # coding: utf-8 > > 2 > > 3 # Conversor de segundos en días, horas, minutos y segundos > > 4 # Pedimos datos > > 5 dato=raw_input(u'Ingresar segundos: ') > > 6 > > 7 # Hacemos un cast, convirtiéndo la cadena en un número largo > > 8 dato= long(dato) > > 9 # comprabación del valor introducido: > > 10 if dato>=2**32: > > 11 print "Ingrese un valor menor que 2³²" > > 12 else: > > 13 # Días > > 14 ndias, aux = divmod(dato,86400) > > 15 # Horas > > 16 nhoras, aux = divmod(aux,3600) > > 17 # Minutos y segundos > > 18 nmin, nseg= divmod(aux,60) > > 19 # Muestra del resultado > > 20 > > 21 print '%d dias, %d horas, %d minutos, %d segundos' % \ > > 22 (ndias,nhoras,nmin,nseg) > > 23 > > 24 preg=raw_input(u'¿Desea ingresar otro valor (s/n)? ') > > 25 > > 26 preg=str(preg) > > 27 while preg!='n': > > 28 > > 29 # Pedimos datos nuevamente > > 30 ndato=raw_input('Ingresar segundos: ') > > 31 # Hacemos un cast, convirtiendo la cadena en un número largo > > 32 ndato= long(ndato) > > 33 # comprabación del valor introducido: > > 34 > > 35 if ndato>=2**32: > > 36 print "Ingrese un valor menor que 2³²" > > 37 else: > > 38 # Días > > 39 ndias, aux = divmod(ndato,86400) > > 40 # Horas > > 41 nhoras, aux = divmod(aux,3600) > > 42 # Minutos y segundos > > 43 nmin, nseg= divmod(aux,60) > > 44 # Muestra del resultado > > 45 print '%d dias, %d horas, %d minutos, %d segundos' % > > \ > > 46 (ndias,nhoras,nmin,nseg) > > 47 print 'Gracias!' > > > > El error al querer ejecutarlo es: > > File "diario.py", line 30 > > ndato=raw_input('Ingresar segundos: ') > > ^ > > IndentationError: expected an indented block > > > > Si elimino el while el código funciona bien (porque fue hecho por > > alguien que sabe, no yo), le quise agregar el while para aprender su uso > > en python. > > > > Me surge la duda si está bien definido el valor preg como string. > > > > Alguna sugerencia? > > > > Gracias > > > > > > -- > > Darío > > > > > > |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-| > > Por favor, no utilice formatos de archivo propietarios para el in- > > tercambio de documentos, como DOC, XLS, BMP, PPT, RAR, MP3, > > DWG, MOV, FLV, WMV, etc. sino HTML, ODT, ODT, DJVU, PDF, > > TXT, CSV, PNG, FLAC, OGV, GZIP o cualquier otro que no obligue > > a utilizar un programa de un fabricante concreto. > > Vea http://www.gnu.org/philosophy/no-word-attachments.es.html > > también > > http://www.vaslibre.org.ve/publicaciones/odfvsooxml-es.pdf > > |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-| > > > > > > > > _______________________________________________ > > Python-es mailing list > > [email protected] > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ > Python-es mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
