Foros del Web » Programando para Internet » Python »

Funciones de reloj

Estas en el tema de Funciones de reloj en el foro de Python en Foros del Web. tengo en siguiente problema con este programa, se supone que debería entregar estos resultados: Código: Sumar y restar dos instantes de tiempo Primer instante (HHMMSS) ...
  #1 (permalink)  
Antiguo 09/01/2013, 16:18
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 13 años, 10 meses
Puntos: 1
Pregunta Funciones de reloj

tengo en siguiente problema con este programa, se supone que debería entregar estos resultados:

Código:
Sumar y restar dos instantes de tiempo
Primer instante  (HHMMSS) ? 104530
Segundo instante (HHMMSS) ?  013040
Suma  = 12:16:10
Mayor = 10:45:30
Menor = 01:30:40
Resta = 09:14:50
pero el problema es que la hora me la entrega como cero pensado que la hora del segundo dígito es 01.

el programa es este:
Código Python:
Ver original
  1. print "Sumar y restar dos instantes de tiempo"
  2. d1=int(input("Primer instante (HMMSS) ?"))
  3. d2=int(input("Segundo instante (HMMSS) ?"))
  4.  
  5.  
  6. def horas(x):
  7.     return x/10000
  8.  
  9. def segundos(x):
  10.     return x - (x/100)*100
  11.  
  12. def minutos(x):
  13.     return (x/100) - (x/10000)*100
  14.  
  15. def totalSegundos(x):
  16.     s= segundos(x)
  17.     m= minutos(x)*60
  18.     h= horas(x)*3600
  19.     return (s+m+h)
  20.  
  21. def escribir(x):
  22.     s=x%60
  23.     m=x/60%60
  24.     h=x/3600
  25.     print h,":",m,":",s
  26.      
  27.  
  28. st1= totalSegundos(d1)
  29. st2= totalSegundos(d2)
  30.  
  31. def mayor(x,y):
  32.     r=max(x,y)
  33.     return r
  34.  
  35. def menor(x,y):
  36.     r=min(x,y)
  37.     return r
  38.  
  39. def resta(x,y):
  40.     if x>y:
  41.         return x-y
  42.     elif x<y:
  43.         return y-x
  44.  
  45. def suma(x,y):
  46.     return x+y
  47.  
  48. print
  49. print "Los segundos totales del primer digito son:",st1," = ",
  50. escribir(st1)
  51. print "Los segundos totales del segundo digito son:",st2," = ",
  52. escribir(st2)
  53. print
  54. print "Suma =",
  55. escribir(suma(st1,st2))
  56. print "Mayor =",
  57. escribir(mayor(st1,st2))
  58. print "Menor =",
  59. escribir(menor(st1, st2))
  60. print "Resta =",
  61. escribir(resta(st1, st2))

y me entrega este resultado que no es el que me debería dar:
Código:
Sumar y restar dos instantes de tiempo
Primer instante (HHMMSS) ?100910
Segundo instante (HHMMSS) ?104530

Los segundos totales del primer digito son: 36550  =  10 : 9 : 10
Los segundos totales del segundo digito son: 38730  =  10 : 45 : 30

Suma = 20 : 54 : 40
Mayor = 10 : 45 : 30
Menor = 10 : 9 : 10
Resta = 0 : 36 : 20
por que ocurre eso al sacar solo las horas en el codigo ?
saludos
  #2 (permalink)  
Antiguo 09/01/2013, 19:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Funciones de reloj

Código Python:
Ver original
  1. print "Sumar y restar dos instantes de tiempo"
  2. d1 = raw_input("Primer instante (HHMMSS) ?  ")
  3. d2 = raw_input("Segundo instante (HHMMSS) ? ")
  4.  
  5. def tiempo(instante):
  6.     instante = int(instante)
  7.     horas = instante / 10000
  8.     minutos = (instante % 10000) / 100
  9.     segundos = instante % 100
  10.     return (horas, minutos, segundos)
  11.  
  12. def totalSegundos(tiempo):
  13.     horas, minutos, segundos = tiempo
  14.     horas = horas * 3600
  15.     minutos = minutos * 60
  16.     return horas + minutos + segundos
  17.  
  18. def escribir(tiempo):
  19.     horas = tiempo / 3600
  20.     minutos = (tiempo / 60) % 60
  21.     segundos = tiempo % 60
  22.     return "%02d:%02d:%02d" % (horas, minutos, segundos)
  23.  
  24. st1 = totalSegundos(tiempo(d1))
  25. st2 = totalSegundos(tiempo(d2))
  26.  
  27. print "Suma  =", escribir(st1 + st2)
  28. print "Mayor =", escribir(max(st1, st2))
  29. print "Menor =", escribir(min(st1, st2))
  30. print "Resta =", escribir(abs(st1 - st2))

Encuentra las diferencias.

Etiquetas: funciones, gui, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:28.