+ 6
Military time challenge
I wrote this code for military time challenge and I don't understand it does not work for two test cases tform=input().split(":") if "PM" in tform[1] and tform[0] !="12": tform[0]=str(12+int(tform[0])) if tform[0]=="12" and "AM" in tform[1]: tform[0]="24" x,y=tform[0],tform[1] y=("".join(y))[:-3] tt=[x] tt.append(y) print(":".join(tt))
36 Answers
+ 17
I've test your code.
4:45 AM becomes 4:45
That's not ok for test cases.
It should be 04:45
All hours between 00:xx and 09:xx must have two digits.
+ 5
I'm still new to this, so after scanning around I noticed a couple examples that I think would maybe be a bit more efficient. But here is my shot anyway, and it worked.
am_pm = input()
if 'AM' in am_pm:
print(am_pm[0:5])
else:
x = am_pm[0:5].split(':')
y = int(x[0]) + 12
z = str(y) + am_pm[2:5]
print(z)
Will gladly except criticism. In fact, I invite it. I want to get better.
Also, I am a bit curious due to the fact that formatting the AM times in military for my code didn't require a 0 in front of the times before 10:00 AM. I say this because the most given reason in these forums for why a given military code attempt fails is the formatting of zeros in the x[0] index on times before 10:00 AM. Why did the method I chose not require the XX:XX format and others supposedly do??
+ 3
Made it with only four lines
time = input().split(':')
if 'PM' in time[1]:
time[0] = str((int(time[0])) + 12)
print(time[0]+':'+ time[1][:-3])
+ 2
Thanks Thomas. Exactly what I was looking for.
+ 2
Solution here!
https://code.sololearn.com/cy9T0LRzvJ9A/?ref=app
+ 2
I solved the problem with functional programming
time = input()
time = time.split()
def am_converter(time):
time = time[0].split(':')
if int(time[0]) < 10:
time = "0" + time[0] + ':' + time[1]
elif int(time[0]) == 12 :
time = '00' + ':' + time[1]
else:
time = time[0] + ':' + time[1]
return time
def pm_converter(time):
time = time[0].split(':')
if time[0] == '12':
time = time[0] + ':' + time[1]
else:
time_start = (12 + int(time[0]))
time_end = time[1]
time = str(time_start) + ":" + time_end
return time
def military_time(time):
if time[1] == "PM":
print(pm_converter(time))
else:
print(am_converter(time))
military_time(time)
+ 2
time = str(input()).upper()
h = time[0:2]
c = time[2]
m = time[3:5]
t = time[6::]
if t == "AM":
print(f'{h}:{m}')
elif t == "PM":
print(f'{int(h)+12}:{m}')
+ 2
My solution:
import re
time = input()
pattern = "^\d+"
number = (re.findall(pattern, time))
if re.search(r"PM", time):
time = re.sub(pattern,str(int(number[0]) + 12),time)
time = re.sub(r"AM|PM","",time)
print(time)
+ 1
https://code.sololearn.com/cGIeXNvMY073/?ref=app
Thanks swim. I have done so, long before you mentioned it, but it still didn't work. I wish I knew all their criteria
+ 1
Noob your solution doesnt handle 12pm or 12 am properly, here is a correction. (I like your use of replace and indexing)
a=input()
b=a.replace("AM","").replace ("PM","")
ans=""
if a[-2:]=="AM":
if b[1]==":":
print("0"+b[0:])
elif b[:2] == "12":
print("00" + b[2:])
else:
print(b[0:])
else:
if b[1]==":":
ans=str(int(b[0])+12)+b[1:]
elif b[2]==":" and b[0:2]!="12":
ans=str(int(b[0:2])+12)+b[2:]
else:
ans= b
print(ans)
+ 1
My solution:
time = input()
hour, pora = time.split(" ")
hours, minutes = hour.split(":")
def change(time):
new_hours = ""
if pora == "PM":
new_hours = int(hours)+12
elif int(hours) <10:
new_hours = "0"+hours
else:
new_hours = hours
return(str(new_hours)+":"+minutes)
print(change(time))
+ 1
https://code.sololearn.com/c1Riz7b6j8ma/?ref=app
+ 1
Mr.Dark
What about 12:00AM == 00:00
+ 1
Thanks
+ 1
PY:
-------------------
def time_converter()->str:
i:str = input()
ampm:str = i[-2:]
if ampm == "PM":
h = i[:2]
i=i.replace(h,str(int(h)+12))
print(i[:-3])
time_converter()
+ 1
time = input().split()
ampm = time[1]
time12 = time[0][:-3]
minutes = time[0][-3:]
time24 = int(time12) + 12 if ampm == "PM" else time12
print(str(time24)+minutes)
+ 1
a1=input()
a=a1.split(':')
if 'PM' in a1:
a1=a1.replace(a[0],str(int(a[0])+12))
print(a1.replace(" PM",""))
else:
print(a1.replace(" AM",""))
+ 1
Coding Cat why does my code not need this (xx:xx) format for am times < 10?? I'm just getting into programming and after I solve a challenge, I always look it up to see if I did it comparably well to how others do it. I see the xx:xx format explanation given in this thread and in others on the same topic and I'm wondering out of genuine curiosity if mine is actually following that format?
I'm wondering if they didn't write the tests wrong and my code really shouldn't be passing the tests. Because your format argument is absolutely valid.
I posted it in this thread if you want to look at it.