Python - Terminar de definir una función

 
Vista:
sin imagen de perfil
Val: 19
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

Terminar de definir una función

Publicado por Laurent (9 intervenciones) el 03/05/2020 15:22:13
Buenas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
'''
 Deseo escribir una función llamada duracion que tiene dos parámetros: inicio y fin.
Cada uno de estos dos parámetros es un tuple de dos componentes (hora, minutos).
Esta función ha de calcular la duración entre los dos parámetros fin e inicio.
Ejemplo:
duracion((15,50), (17,55))
la función devolvería:
(4,6)
Otro ejemplo:
duracion((4,50), (3,50))
la función devolveria:
(23,0)
Es decir, además entiendo que debería introducir un reloj dentro de la función,
que siempre avance en adelante y que las horas pueden valer de 0 a 23).
'''
 
# Lo que he intentado pero me falta completar con más cosas dicha función:
 
def duracion(inicio, fin):
    inicio = (hora, minutos)
    fin = (hora,minutos)
    diff = tuple(i-j for i,j in zip(inicio,fin))
    return diff

Gracias por vuestros consejos y ayuda como escribir correctamente esta funcion!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Terminar de definir una función

Publicado por tincopasan (1082 intervenciones) el 03/05/2020 23:34:58
hola:
varias cosas, 1) en este caso no entiendo tu lógica para intentar resolver el planteo
2)
1
2
3
4
Ejemplo:
duracion((15,50), (17,55))
la función devolvería:  (4,6)  # ¿de dónde salen esos valores?
# a simple vista es 2,5

3)no se puede restar directamente sin tener en cuenta las variables de diferencias entre horas o minutos ya que en cualquier caso alguno puede ser menor
1
duracion((4,50), (3,50))
obviamente una resta directa de las horas no dará 23
4) python trae funciones que simplifican esto, pero supongo que es una tarea que les dan para que aprendan a usar la lógica o crear funciones propias en caso de que estás no existan o las desconozcan.
5)hago el código porque lo intestate y pongo una muestra de como se puede hacer a la vieja escuela, es sumamente simple el código para que no haya dudas y si quieres lo cambias y adaptas a tu gusto.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#-*- coding: utf -8 -*-
def duracion(inicio, fin):
 
    hora_inicio,min_inicio  = inicio
    hora_final,min_final = fin
    if min_final < min_inicio:
        hora_final -=1
        min_final += 60
    if hora_final < hora_inicio:
        hora_final+=24
 
    dif = ( hora_final- hora_inicio  ,min_final -min_inicio)
    return dif
 
print(duracion((4,50),(3,50)))
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

Terminar de definir una función

Publicado por Laurent (9 intervenciones) el 04/05/2020 17:53:17
Muchas gracias tincopasan!

Sí, era 2 y 5. Se me fue la cabeza a otro caso que estaba mirando simultáneamente.

Gracias por tu código:

min_final +=60...

Me ha ayudado a entender la lógica que hay detrás y no habido saber ver.

Muchísimas gracias!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar