Hi,
Why doesn’t my code pass?
def add_time(start, duration):
datas = {'h_s': int(start.split(':')[0]), 'm_s': int(start.split()[0].split(':')[1]), 'h_d': int(duration.split(':')[0]), 'm_d': int(duration.split(':')[1]), 'am_pm': start.split()[1]}
hour_start = datas['h_s']
hour_duration = datas['h_d']
min_start = datas['m_s']
min_duration = datas['m_d']
sign = datas['am_pm']
sign_list = []
if sign == 'AM':
sign_list.append(sign)
sign_list.append('PM')
else:
sign_list.append(sign)
sign_list.append('AM')
def calc_h(a, b):
while b == 0:
return a
else:
return calc_h(a + 1, b - 1)
a = calc_h(hour_start, hour_duration) // 12
hour_new = calc_h(hour_start, hour_duration) - (12 * a)
b = calc_h(min_start, min_duration) // 60
hour_new = hour_new + b
minutes_new = calc_h(min_start, min_duration) - (60 * b)
if a + b == 0:
sign_new = sign_list[0]
elif (a + b) % 2 == 1:
sign_new = sign_list[1]
elif a + b == 2:
sign_new = sign_list[1]
else:
sign_new = sign_list[0]
days = a // 2
if sign == "PM" and a > 0:
days += 1
if days == 1:
text = '(next day)'
elif days >= 2:
text = f'({str(days)} days later)'
else:
text = ''
if len(str(minutes_new)) < 2:
new_time = print(f'{hour_new}:0{minutes_new} {sign_new} {text}')
else:
new_time = print(f'{hour_new}:{minutes_new} {sign_new} {text}')
return new_time
add_time(‘3:30 PM’, ‘2:12’)