Python - Ayuda con el siguiente problema por favor

 
Vista:

Ayuda con el siguiente problema por favor

Publicado por Juan (1 intervención) el 20/11/2021 07:22:06
Me pidieron que resolviera el siguiente problema
Una agencia de viajes necesita informar a sus clientes la hora de llegada de sus vuelos. Se conoce la hora de partida del vuelo (en horas, minutos y segundos) y la duración del vuelo (en horas, minutos y segundos).

Cree una función que retorne la hora de llegada del vuelo en una cadena con el formato “HH:mm:ss” donde HH es la hora, mm los minutos y ss los segundos de la hora de llegada del vuelo.

La hora está dada en formato de 24 horas. Si alguno de los 3 números de la respuesta es menor a 10, sólo se necesita un dígito ('7' en lugar de '07'). Y al momento de ejecutarlo me agrega una hora más
Ejemplo de los casos:
Caso 1
Su programa falló cuando se usaron estas entradas:
hora_salida = 7
minuto_salida = 3
segundo_salida = 58
duracion_horas = 0
duracion_minutos = 24
duracion_segundos = 33
Su programa respondió: 8:28:31
-----------------------
Caso 2
Su programa falló cuando se usaron estas entradas:
hora_salida = 7
minuto_salida = 3
segundo_salida = 58
duracion_horas = 12
duracion_minutos = 24
duracion_segundos = 33
Su programa respondió: 20:28:31
1
2
3
4
5
6
7
8
9
10
11
def calcular_horario_llegada(hora_salida:int,minuto_salida:int,segundo_salida:int,duracion_horas:int,duracion_minutos:int,duracion_segundos:int)->int:
    hora_llegada = ((segundo_salida + duracion_segundos)// 60) + ((minuto_salida + duracion_minutos)// 60) + (hora_salida + duracion_horas)
    minuto_llegada = ((segundo_salida + duracion_segundos)// 60) + ((minuto_salida + duracion_minutos)%60)
    segundo_llegada = (segundo_salida + duracion_segundos) % 60
    if segundo_llegada > 59:
        minuto_llegada = minuto_llegada + 1
    if minuto_llegada > 59:
        hora_llegada = hora_llegada + 1
    if hora_llegada == 0 or hora_llegada > 23:
        hora_llegada = hora_llegada - 24
    return str(hora_llegada) + ":" + str(minuto_llegada) + ":" + str(segundo_llegada)
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

Ayuda con el siguiente problema por favor

Publicado por tincopasan (1087 intervenciones) el 20/11/2021 09:37:02
la verdad es que me distraen tantas operaciones ¿es obligatorio hacerlo así?
sino:
1
2
3
4
5
6
7
8
9
10
11
#-*- coding: utf  -8 -*-
 
def calcular_horario_llegada(hora_salida,minuto_salida,segundo_salida,duracion_horas,duracion_minutos,duracion_segundos):
    minutos,segundos = divmod(segundo_salida+duracion_segundos,60)
    horas,minutos = divmod(minutos+minuto_salida+duracion_minutos,60)
    horas +=  hora_salida + duracion_horas
    if horas > 24:horas -= 24
    return f"{horas} : {minutos} : {segundos}"
 
print(calcular_horario_llegada(7,3,58,0,24,33))
print(calcular_horario_llegada(7,3,58,12,24,33))
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
sin imagen de perfil

Ayuda con el siguiente problema por favor

Publicado por Miguel Cardona (1 intervención) el 13/09/2022 22:41:26
Excelente Profesor: Siempre acertado. Muchas gracias por su ayuda
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

Ayuda con el siguiente problema por favor

Publicado por MAURICIO (2 intervenciones) el 23/04/2023 16:06:02
Aqui lo tienes para que lo puedas testear.

def calcular_horario_llegada(hora_salida,minutos_salida,segundos_salida,hora_duracion,minutos_duracion,segundos_duracion):

hora_llegada = hora_salida + hora_duracion
minutos_llegada = minutos_salida + minutos_duracion
segundos_llegada = segundos_salida + segundos_duracion

if segundos_llegada >= 60:
segundos_llegada = segundos_llegada - 60
minutos_llegada+=1


if minutos_llegada >= 60:
minutos_llegada = minutos_llegada - 60
hora_llegada +=1


if hora_llegada >= 24:
hora_llegada = hora_llegada - 24


tiempo_llegada = f"{hora_llegada}:{minutos_llegada}:{segundos_llegada}"

print (tiempo_llegada)
return tiempo_llegada



calcular_horario_llegada(7,3,58,0,24,33)
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

Ayuda con el siguiente problema por favor

Publicado por LinaZamSa (1 intervención) el 26/05/2022 23:49:03
def calcular_horario_llegada (hora_salida: int , minuto_salida:int, segundo_salida:int, duracion_horas:int, duracion_minutos:int, duracion_segundos:int) -> int:

hora_llegada = (hora_salida + duracion_horas)*3600
minuto_llegada = (minuto_salida + duracion_minutos)*60
segundo_llegada = (segundo_salida + duracion_segundos)

if segundo_llegada > 59:
minuto_llegada = minuto_llegada + 60
segundo_llegada = segundo_llegada - 60

if minuto_llegada > 3599:
hora_llegada = hora_llegada + 3600
minuto_llegada = minuto_llegada - 3600

if hora_llegada == 0 or hora_llegada > 86399:
hora_llegada = hora_llegada - 86400

hf = int(hora_llegada/3600)
mf = int(minuto_llegada/60)

return (str(hf)+":"+str(mf)+":"+str(segundo_llegada))

print ("La hora de llegada de su vuelo es: ", calcular_horario_llegada(hora_salida, minuto_salida, segundo_salida, duracion_horas, duracion_minutos, duracion_segundos))
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

Ayuda

Publicado por JOHNNY ALEXIS (1 intervención) el 04/06/2023 14:59:50
Saludos alguien me puede sugerir un programa aue recoja un grupo de pdf y para hacerles consulta mediante un chatbox. Esto seria para cargar leyes, libros pdf entre otros materiales. La idea principal es pedir analisis, resumenes, comparaciones. Estilo Chatpdf, pero aue reuna toda la informacion para que interactue con ellas. Si no existe este programa, me gustaria que alguien me contactara para que nos pongamos de acuerdo y lo desarrolle. Gracia.
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

Ayuda con el siguiente problema por favor

Publicado por @CarlosPython (1 intervención) el 20/03/2025 00:15:18
1
2
3
4
5
6
7
def calcular_horario_llegada(hs:int,ms:int,ssa:int,hd:int,md:int,sd:int)-> int:
    ss = (ssa+sd)%60
    minutos_dur = (ss+sd)//60
    mm = (minutos_dur+ms+md)%60
    horas_dur = (ms+md)//60
    hh = (horas_dur+hs+hd)%24
    return str(hh) + ":" + str(mm) + ":" + str(ss)
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

Ayuda con el siguiente problema por favor

Publicado por Rolando José (66 intervenciones) el 05/05/2025 04:06:02
Creo que voy a hacer una confesión, yo no se casi nada de python, pero creo que no lo necesito, a menos claro esta que me obliguen por alguna razon con revolver en mano a hacer cosas en python, yo siempre termino haciendolas en TCLTK, y la razon es que python es un lenguaje que al ser de script y al ser multiplataforma tuvo una razon de ser mientras que los Sistemas Operativos eran de consola, pero ya no hay casi nadie que use un Sistema Operativo de esos, por lo que no es logico que sigan enseñando a hacer programacion de consola, ademas tiene varias GUI, pero son practicamente inviables con su filosofia de hacer las cosas simples y funcionales.

En este ejercicio por ejemplo es casi mas facil hacer un lenguaje GUI, como TCLTK que tratar de hacerlo en consola, y/o en las GUI de python, pues python los hace esclavos de muchas herencias que obligan a escribir muchas mas lineas de codigo que las que se necesita TCLTK, yo sufrí un ACV, se me hace mas facil muchas veces hacer las cosas en TCLTK, que hacerlas en python.

En este caso hice un GUI, muy simple, 3 frames para recoger en cada uno los datos de salida del vuelo y duracion del vuelo y finalmente en el ultimo presentar la llegada del vuelo.

En cada frame 3 botones y 3 cajones para Horas minutos y segundos.

Se me pareció un poco al control de la maquina del tiempo de volver al futuro.

La logica es muy basica, y funciona espero, Bueno hice un ejercicio a mano y obtuve los mismos resultados por lo que creo que si funciona.

Ni siquiera las mejores versiones de IA, pueden hacer codigos mas cortos, usando los 3 GUIs de python, por lo que creo que no se pueden hacer en menos de 40 lineas de codigo que uno logra con TCLTK.

coo el foro es de python aprovecho que el codigo de TCLTK lo puede ejecutar el GUI po defecto de python, Tkinter, por lo que practicamente python puede ejecutar codigo de tCLTK, y como no hay foro de TK que esta presnte en Python, Lua Ruby y Perl, aprovecho para hacer fisioterapia de mi mano izquierda.

Quizas quienes cobraban por linea de codigo es hora que busquen otro trabajo, la idea de hace programas simples que llenen libros ya no va con nadie, por lo menos yo teniendo medio cuerpo funcional no voy a hacer ningun programa que requiera mas lineas de texto que en consola.

Me gusta TCLTK, porque no requiere muchas lineas de codigo y se puede reciclar mucho del codigo, las aplicaciones quedan multiplataforma y no requieren tanto RAM y los ejecutables quedan pequeños aun incluyendo a tkinter y python.

CODIGO PARA PROBAR EN TCLTK
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
35
36
37
proc tmsg {{txt ""} {ty "ok"} {img "info"}} {return [tk_messageBox -message $txt -type $ty -icon $img]}
 
catch {destroy .h}
toplevel .h -bg #AAA
wm geometry .h "400x300+0+0"
wm withdraw .
wm title .h "Hora de llegada de vuelos"
 
foreach {hs ms ss hd md sd} "7 3 58 0 24 33" {break}
pack \
[labelframe .h.f0 -text "Hora de Salida:" -bg #AFA ] \
[labelframe .h.f1 -text "Duracion del vuelo" -labelanchor n -bg #AAF] \
[labelframe .h.f2 -text "Hora de Arribo:" -labelanchor ne -bg #FAA] \
 -side top -expand 1 -fill both
 
pack [button .h.f0.lh -text "HH:" -command {calc}] [entry .h.f0.vh -textvar hs -width 3] -side left -padx 10
pack [button .h.f0.lm -text "MM:" -command {calc}] [entry .h.f0.vm -textvar ms -width 3] -side left -padx 10
pack [button .h.f0.ls -text "SS:" -command {calc}] [entry .h.f0.vs -textvar ss -width 3] -side left -padx 10
pack [button .h.f1.lh -text "HH:" -command {calc}] [entry .h.f1.vh -textvar hd -width 3] -side left -padx 10
pack [button .h.f1.lm -text "MM:" -command {calc}] [entry .h.f1.vm -textvar md -width 3] -side left -padx 10
pack [button .h.f1.ls -text "SS:" -command {calc}] [entry .h.f1.vs -textvar sd -width 3] -side left -padx 10
pack [button .h.f2.lh -text "HH:" -command {calc}] [entry .h.f2.hl -textvar ha -width 3] -side left -padx 10
pack [button .h.f2.lm -text "MM:" -command {calc}] [entry .h.f2.ml -textvar ma -width 3] -side left -padx 10
pack [button .h.f2.ls -text "SS:" -command {calc}] [entry .h.f2.sl -textvar sa -width 3] -side left -padx 10
 
proc calc { } {
global hs ms ss hd md sd ha ma sa
set ha [expr (($hs+$hd))]
set ma [expr (($ms+$md))]
set sa [expr (($ss+$sd))]
if {$sa>60} {
set ma [expr $ma+1]
set sa [expr ($sa-60)]
if {$ma>60} {
set ha [expr $ha+1]
set ma [expr ($ma-60)]
}}}

CODIGO PARA PROBAR CON PYTHON
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
35
36
37
38
39
40
41
42
43
import tkinter as tk
w=tk.Tk()
code='''
proc tmsg {{txt ""} {ty "ok"} {img "info"}} {return [tk_messageBox -message $txt -type $ty -icon $img]}
catch {destroy .h}
toplevel .h -bg #AAA
wm geometry .h "400x300+0+0"
wm withdraw .
wm title .h "Hora de llegada de vuelos"
foreach {hs ms ss hd md sd} "7 3 58 0 24 33" {break}
pack \
[labelframe .h.f0 -text "Hora de Salida:" -bg #AFA ] \
[labelframe .h.f1 -text "Duracion del vuelo" -labelanchor n -bg #AAF] \
[labelframe .h.f2 -text "Hora de Arribo:" -labelanchor ne -bg #FAA] \
 -side top -expand 1 -fill both
pack [button .h.f0.lh -text "HH:" -command {calc}] [entry .h.f0.vh -textvar hs -width 3] -side left -padx 10
pack [button .h.f0.lm -text "MM:" -command {calc}] [entry .h.f0.vm -textvar ms -width 3] -side left -padx 10
pack [button .h.f0.ls -text "SS:" -command {calc}] [entry .h.f0.vs -textvar ss -width 3] -side left -padx 10
pack [button .h.f1.lh -text "HH:" -command {calc}] [entry .h.f1.vh -textvar hd -width 3] -side left -padx 10
pack [button .h.f1.lm -text "MM:" -command {calc}] [entry .h.f1.vm -textvar md -width 3] -side left -padx 10
pack [button .h.f1.ls -text "SS:" -command {calc}] [entry .h.f1.vs -textvar sd -width 3] -side left -padx 10
pack [button .h.f2.lh -text "HH:" -command {calc}] [entry .h.f2.hl -textvar ha -width 3] -side left -padx 10
pack [button .h.f2.lm -text "MM:" -command {calc}] [entry .h.f2.ml -textvar ma -width 3] -side left -padx 10
pack [button .h.f2.ls -text "SS:" -command {calc}] [entry .h.f2.sl -textvar sa -width 3] -side left -padx 10
proc calc { } {
global hs ms ss hd md sd ha ma sa
set ha [expr (($hs+$hd))]
set ma [expr (($ms+$md))]
set sa [expr (($ss+$sd))]
if {$sa>60} {
set ma [expr $ma+1]
set sa [expr ($sa-60)]
if {$ma>60} {
set ha [expr $ha+1]
set ma [expr ($ma-60)]
}}}
'''
w.eval(code)
w.mainloop()

hora-de-llegada
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