Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Josueosor en 28 Enero 2021, 16:54 pm



Título: Ayuda urgente con problema en python
Publicado por: Josueosor en 28 Enero 2021, 16:54 pm
Me mandaron a escribir un programa que te pida la hora, luego te pida el formato (am o pm), luego me pedirá cuántas horas al futuro quieres ir y luego a la hora ingresada previamente se le suma las horas al futuro y el formato cambia de AM a pm o viceversa si lo necesita y me lleva comiendo la cabeza por dias, alguien me podría ayudar?


Título: Re: Ayuda urgente con problema en python
Publicado por: Danielㅤ en 28 Enero 2021, 17:23 pm
Hola, por supuesto que te podemos ayudar, déjanos tu código y coméntanos específicamente que problema o duda tenés con tu código.

Si es para pedido para que te hagamos la tarea, no podremos porque estamos de vacaciones.


Saludos


Título: Re: Ayuda urgente con problema en python
Publicado por: Josueosor en 28 Enero 2021, 19:11 pm
Código
  1.  
  2. hour = input('Enter an hour between 1 and 12: ')
  3. h = int(hour)
  4. ampm = input('am (1) or pm (2)? ')              
  5. a = int(ampm)
  6. b = 1
  7. c = 2
  8. future = input('how many hours ahead?: ')
  9. f = int(future)
  10. m = f + h
  11. if m <= 12:
  12.  if a == b:
  13.    print('New hour am: ')
  14.    print(m)
  15.  else:
  16.    print('New hour pm: ')
  17.    print(m)
  18. elif a == b:
  19.  new_hour = h + f - 12
  20.  print('New hour pm: ')
  21.  print(new_hour)
  22. else:
  23.  new_hour2 = h + f - 12
  24.  print('New hour am:')
  25.  print(new_hour2)
  26.  

Está así, el problema es que no me cambia el formato de AM a pm bien


[MOD] usar las etiquetas GeSHi para publicar codigo.


Necesito ayuda súper rápido :C

[MOD] No hacer doble post. Usa el botón modificar.


Título: Re: Ayuda urgente con problema en python
Publicado por: MCKSys Argentina en 28 Enero 2021, 21:33 pm
Hola!

Puedes usar datetime para hacer los cálculos:

Código
  1. import datetime
  2.  
  3. hour = input('Enter an hour between 1 and 12: ')
  4. if (not hour.isdecimal()) or (int(hour) < 1 or int(hour) > 12):
  5.    print('You must enter an hour between 1 and 12!')
  6.    exit(0)
  7. h = datetime.datetime(year=2021, month=1, day=1, hour=int(hour))
  8.  
  9. ampm = input('am (1) or pm (2)? ')
  10. if (not ampm.isdecimal()) or (int(ampm) != 1 and int(ampm) != 2):
  11.    print('You must enter 1 for am or 2 for pm!')
  12.    exit(0)
  13. a = int(ampm)
  14.  
  15. if a == 2:
  16.    h += datetime.timedelta(hours=12)
  17.  
  18. future = input('how many hours ahead?: ')
  19. if not future.isdecimal():
  20.    print('You must enter a numer of hours!')
  21.    exit(0)
  22. f = int(future)
  23.  
  24. m = h + datetime.timedelta(hours=f)
  25. print('New hour %s: ')
  26. print('{:%I %p}'.format(m))
  27. exit(0)
  28.  

Saludos!


Título: Re: Ayuda urgente con problema en python
Publicado por: Josueosor en 28 Enero 2021, 22:04 pm
No funciona, queda así:

Enter an hour between 1 and 12: 12
am (1) or pm (2)? 1
how many hours ahead?: 4
New hour %s:
04 PM

Deberia quedar 4 AM con esas especificaciones


Título: Re: Ayuda urgente con problema en python
Publicado por: MCKSys Argentina en 28 Enero 2021, 22:54 pm
No funciona, queda así:

Enter an hour between 1 and 12: 12
am (1) or pm (2)? 1
how many hours ahead?: 4
New hour %s:
04 PM

Deberia quedar 4 AM con esas especificaciones

Tienes razón, las 12 AM son las 00:00 en formato de 24 horas.

Debes corregir el if que agrega 12 horas si es PM, para que agregue 12 horas cuando es am. Osea, cambiar el:

Código
  1. if a == 2:
  2.  

por

Código
  1. if a == 1:
  2.  


EDIT:

De paso, deja 1 solo print al final, por ej:
Código
  1. print('New hour: {:%I %p}'.format(m))
  2.  
Saludos!


Título: Re: Ayuda urgente con problema en python
Publicado por: Josueosor en 29 Enero 2021, 00:55 am
lamentablemente ahora el error es al contrario si no eligo 12 como hora inicial queda asi:

Enter an hour between 1 and 12: 4
am (1) or pm (2)? 1
how many hours ahead?: 4
08 PM

al parecer no fui el unico al que le exploto la cabeza .-.


Título: Re: Ayuda urgente con problema en python
Publicado por: tincopasan en 29 Enero 2021, 01:33 am
no iba a responder, porque me molesta lo de "urgente", no sé pòrque el foro debería ser ayuda para tareas Y encima con apuros, en fin, como te han ayudado te diré que hay muchas formas de hacerlo, ahora siguiendo tu lógica, no funcionará ni a palos, agrega 50 hs y fijate que pasa, además hay tantas declaraciones inentendible que ni hablar, pero una forma sin uso de bibliotecas sería:
Código
  1.  
  2. hour = int(input('Enter an hour between 1 and 12: '))
  3. ampm = int(input('am (1) or pm (2)? '))              
  4. if ampm == 1:
  5.    ampm ='am'
  6. else:
  7.    ampm = 'pm'
  8.  
  9. future = int(input('how many hours ahead?: '))
  10. m = hour + future
  11.  
  12. tiempo ,hora_nueva= divmod(m,12)
  13.  
  14.  
  15. if tiempo %2 == 1:
  16.    if ampm == 'am':
  17.        ampm = 'pm'
  18.    elif ampm == 'pm':
  19.        ampm = 'am'
  20.  
  21. print(f'La nueva hora es: {hora_nueva} {ampm}')
  22.  
  23.  
  24.  

Citar
al parecer no fui el unico al que le exploto la cabeza .-.

esta huevada no le puede explotar la cabeza a nadie

Edit: pegue otro código que también pedían en el foro y también respondí.