Anda di halaman 1dari 8

Inicio Libros Tutoriales Eventos Foro Buscar

Libros / Algoritmos de Programacin con Python / Captulo 3. Funciones


/ 3.6. Devolver mltiples resultados

3.6. Devolver mltiples


resultados
Ahora nos piden que escribamos una funcin que dada una duracin en segundos sin
fracciones (representada por un nmero entero) calcule la misma duracin en horas,
minutos y segundos.

La especificacin es sencilla:
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
La cantidad de horas es la duracin informada en segundos dividida por 3600
(divisin entera).

La cantidad de minutos es el resto de la divisin del paso 1, dividido por 60 (divisin


entera).

La cantidad de segundos es el resto de la divisin del paso 2.

Es importante notar que si la duracin no se informa como un nmero entero, todas


las operaciones que se indican ms arriba carecen de sentido.

Cmo hacemos para devolver ms de un valor? En realidad lo que se espera de esta


funcin es que devuelva una terna de valores: si ya calculamos hs , min y seg , lo que
debemos retornar es la terna (hs, min, seg) :

def aHsMinSeg (x):


""" Dada una duracin en segundos sin fracciones
(la funcin debe invocarse con nmeros enteros)
se la convierte a horas, minutos y segundos """
hs = x / 3600
min = (x % 3600) / 60
seg = (x % 3600 ) % 60
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
return (hs, min, seg)

Esto es lo que sucede al invocar esta funcin:

>>> (h, m, s) = aHsMinSeg(3661)


>>> print "Son",h,"horas",m,"minutos",s,"segundos"
Son 1 horas 1 minutos 1 segundos
>>> (h, m, s) = aHsMinSeg(3661.0) # aqu violamos la especificacion
>>> print "Son",h,"horas",m,"minutos",s,"segundos" # y esto es lo que pas
a:
Son 1.0169444444444444 horas 1.0166666666666666 minutos 1.0 segundos
>>>

NOTA
Cuando la funcin debe retornar mltiples resultados se empaquetan todos juntos
en una n-upla del tamao adecuado.

Esta caracterstica est presente en Python, Haskell, y algunos otros pocos lenguajes.
En los lenguajes en los que esta caracterstica no est presente, como C, Pascal, Java
o PHP, es necesario recurrir a otras tcnicas ms complejas para poder obtener un
comportamiento similar.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Respecto de la variable que har referencia al resultado de la invocacin, se podr usar
tanto una n-upla de variables como en el ejemplo anterior, en cuyo caso podremos
nombrar en forma separada cada uno de los resultados, o bien se podr usar una sola
variable, en cuyo caso se considerar que el resultado tiene un solo nombre y la forma
de una n-upla:

>>> t=aHsMinSeg(3661)
>>> print t
(1, 1, 1)
>>>

NOTA
Si se usa una n-upla de variables para referirse a un resultado, la cantidad de
variables tiene que coincidir con la cantidad de valores que se retornan.

>>> (x,y)=aHsMinSeg(3661)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
>>> (x,y,w,z)=aHsMinSeg(3661)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 3 values to unpack
>>>

Anterior Siguiente
3.5. Un ejemplo completo 3.7. Resumen

Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola, Maximiliano Curia, Marcos Medrano,
Nicols Paez. La copia y redistribucin de esta pgina se permite bajo los trminos de la licencia Creative
Commons Atribucin - Compartir Obras Derivadas Igual 3.0 siempre que se conserve esta nota de copyright.

INDICE DE CONTENIDOS

1. Algunos conceptos bsicos

2. Programas sencillos
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Captulo 3. Funciones

3.1. Documentacion de funciones

3.2. Imprimir versus Devolver

3.3. Cmo usar una funcin en un programa

3.4. Ms sobre los resultados de las funciones

3.5. Un ejemplo completo

3.6. Devolver mltiples resultados

3.7. Resumen

3.8. Ejercicios

4. Decisiones

5. Ms sobre ciclos

6. Cadenas de caracteres

7. Tuplas y listas

8. Algoritmos de bsqueda

9. Diccionarios

10. Contratos y Mutabilidad

11. Manejo de archivos

12. Manejo de errores y excepciones

13. Procesamiento de archivos

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
14. Objetos

15. Polimorfismo, Herencia y Delegacin

16. Listas enlazadas

17. Pilas y colas

18. Modelo de ejecucin de funciones y recursividad

19. Ordenar listas

20. Algunos ordenamientos recursivos

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com

Anda mungkin juga menyukai