Vous êtes sur la page 1sur 9

Inicio Libros Tutoriales Eventos Foro Buscar

Libros / Algoritmos de Programacin con Python / Captulo 3. Funciones / 3.5. Un ejemplo completo

3.5. Un ejemplo completo


Problema 3.1. Un usuario nos plantea su problema: necesita que se facture el uso de un
tel-fono. Nos informar la tarifa por segundo, cuntas comunicaciones se realizaron, la
duracin de cada comunicacin expresada en horas, minutos y segundos. Como
resultado deberemos informar la duracin en segundos de cada comunicacin y su
costo.

Solucin. Aplicaremos los pasos aprendidos:


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

Cuntas tarifas distintas se usan? Una sola (la llamaremos f ).

Cuntas comunicaciones se realizaron? La cantidad de comunicaciones (a la que


llamaremos n ) se informa cuando se inicia el programa.

En qu formato vienen las duraciones de las comunicaciones? Vienen como ternas


(h, m, s) .

Qu se hace con esas ternas? Se convierten a segundos y se calcula el costo de


cada comunicacin multiplicando el tiempo por la tarifa.

2. Especificacin:

Entradas:
Una tarifa f expresada en pesos/segundo.

Una cantidad n de llamadas telefnicas.

n duraciones de llamadas ledas de teclado y expresadas en horas, minutos y


segundos.

Salidas: Mostrar por pantalla las n duraciones ingresadas, convertidas a segundos,


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
y su costo. Para cada juego de datos de entrada (h, m, s) se imprime: 3600 * h
+ 60 * m + s, f * (3600 * h + 60 * m + s)

3. Diseo:

Siguiendo a Thompson, buscamos un programa que haga algo anlogo, y vemos si se lo


puede modificar para resolver nuestro problema. El programa tres_tiempos que
hicimos anteriormente, se parece bastante a lo que necesitamos.

En primer lugar se observa que el tarifador debe leer el valor de la tarifa ( f ) y que en
tres_tiempos se conoce la cantidad de ternas ( 3 ), mientras que en tarifador la
cantidad de ternas es un dato a ingresar.

Adems, se puede ver que en el cuerpo del ciclo de tres_tiempos , se lee una terna y se
llama a print_asegundos que calcula, imprime y no devuelve ningn valor. Si
hiciramos lo mismo en tarifador , no podramos calcular el costo de la comunicacin.
Es por ello que en lugar de usar print_asegundos se utiliza la funcin asegundos , que
calcula el valor transformado y lo devuelve en lugar de imprimirlo y en el cuerpo
principal del programa se imprime el tiempo junto con el costo asociado.

4. Implementacin: El siguiente es el programa resultante:

# tarifador.py: Factura el tiempo de uso de un telfono


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
# tarifador.py: Factura el tiempo de uso de un telfono
def main():
""" El usuario ingresa la tarifa por segundo, cuntas
comunicaciones se realizaron, y la duracion de cada
comunicacin expresada en horas, minutos y segundos. Como
resultado se informa la duracin en segundos de cada
comunicacin y su costo. """

f = input("Cunto cuesta 1 segundo de comunicacion?: ")


n = input("Cuntas comunicaciones hubo?: ")
for x in range(n):
hs = input("Cuntas horas?: ")
min = input("Cuntos minutos?: ")
seg = input("Cuntos segundos?: ")
segcalc = asegundos(hs, min, seg)
costo = segcalc * f
print "Duracion: ", segcalc, "segundos. Costo: ",costo, "$."

def asegundos (horas, minutos, segundos):


segsal = 3600 * horas + 60 * minutos + segundos
return segsal

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

5. Prueba: Lo probamos con una tarifa de $ 0,40 el segundo y tres ternas de (1,0,0) ,
(0,1,0) y (0,0,1) . Este es el resultado:

>>> import tarifador


Cuanto cuesta 1 segundo de comunicacion?: 0.40
Cuantas comunicaciones hubo?: 3

Cuantas horas?: 1
Cuantos minutos?: 0
Cuantos segundos?: 0
Duracion: 3600 segundos. Costo: 1440.0 $.

Cuantas horas?: 0
Cuantos minutos?: 1
Cuantos segundos?: 0
Duracion: 60 segundos. Costo: 24.0 $.

Cuantas horas?: 0
Cuantos minutos?: 0

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Cuantos segundos?: 1
Duracion: 1 segundos. Costo: 0.4 $.
>>>

6. Mantenimiento:

Ejercicio 3.6. Corregir el programa para que:

Imprima el costo en pesos y centavos, en lugar de un nmero decimal.

Informe adems cul fue el total facturado en la ejecucin.

Anterior Siguiente
3.4. Ms sobre los resultados de las funciones 3.6. Devolver mltiples resultados

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.

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

1. Algunos conceptos bsicos

2. Programas sencillos

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

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

12. Manejo de errores y excepciones

13. Procesamiento de archivos

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

Vous aimerez peut-être aussi