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?
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
hour = input('Enter an hour between 1 and 12: ')
h = int(hour)
ampm = input('am (1) or pm (2)? ')
a = int(ampm)
b = 1
c = 2
future = input('how many hours ahead?: ')
f = int(future)
m = f + h
if m <= 12:
if a == b:
print('New hour am: ')
print(m)
else:
print('New hour pm: ')
print(m)
elif a == b:
new_hour = h + f - 12
print('New hour pm: ')
print(new_hour)
else:
new_hour2 = h + f - 12
print('New hour am:')
print(new_hour2)
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.
Hola!
Puedes usar datetime para hacer los cálculos:
import datetime
hour = input('Enter an hour between 1 and 12: ')
if (not hour.isdecimal()) or (int(hour) < 1 or int(hour) > 12):
print('You must enter an hour between 1 and 12!')
exit(0)
h = datetime.datetime(year=2021, month=1, day=1, hour=int(hour))
ampm = input('am (1) or pm (2)? ')
if (not ampm.isdecimal()) or (int(ampm) != 1 and int(ampm) != 2):
print('You must enter 1 for am or 2 for pm!')
exit(0)
a = int(ampm)
if a == 2:
h += datetime.timedelta(hours=12)
future = input('how many hours ahead?: ')
if not future.isdecimal():
print('You must enter a numer of hours!')
exit(0)
f = int(future)
m = h + datetime.timedelta(hours=f)
print('New hour %s: ')
print('{:%I %p}'.format(m))
exit(0)
Saludos!
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
Cita de: 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
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:
if a == 2:
por
if a == 1:
EDIT:De paso, deja 1 solo print al final, por ej:
print('New hour: {:%I %p}'.format(m))
Saludos!
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 .-.
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:
hour = int(input('Enter an hour between 1 and 12: '))
ampm = int(input('am (1) or pm (2)? '))
if ampm == 1:
ampm ='am'
else:
ampm = 'pm'
future = int(input('how many hours ahead?: '))
m = hour + future
tiempo ,hora_nueva= divmod(m,12)
if tiempo %2 == 1:
if ampm == 'am':
ampm = 'pm'
elif ampm == 'pm':
ampm = 'am'
print(f'La nueva hora es: {hora_nueva} {ampm}')
Citaral 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í.