Tell us what’s happening:
I’m attempting to complete the project to build a time calculator. I’ve written my code using Spyder (python) and it fully works. It returns all the correct values for each test when I call the function and manually enter the required parameters. However, when I copy and paste my code into the freecodecamp IDE and run the tests, they all fail. I’m not sure why, it returns exactly what it asks for, the exact same punctuation, the exact same values. Any help would be much appreciated!
Your code so far
def add_time(start, duration, day=True):
starting_hours = int(start[:start.find(':')])
starting_minutes = int(start[start.find(':') + 1:start.find(' ')])
meridiem = start[start.find(' ') + 1:]
duration_hours = int(duration[:duration.find(':')])
duration_minutes = int(duration[duration.find(':') + 1:])
total_minutes = starting_minutes + duration_minutes
minutes = total_minutes % 60
total_hours, number_of_days, meridiem = add_hours(starting_hours, duration_hours, total_minutes, meridiem)
if total_hours == 0:
total_hours = 12
if day != True:
weekday = day_of_week(day, number_of_days)
if number_of_days == 0:
if minutes < 10:
print(f'{total_hours}:0{minutes} {meridiem}, {weekday}')
else:
print(f'{total_hours}:{minutes} {meridiem}, {weekday}')
if number_of_days == 1:
if minutes < 10:
print(f'{total_hours}:0{minutes} {meridiem}, {weekday} (next day)')
else:
print(f'{total_hours}:{minutes} {meridiem}, {weekday} (next day)')
if number_of_days > 1:
if minutes < 10:
print(f'{total_hours}:0{minutes} {meridiem}, {weekday} ({number_of_days} days later)')
else:
print(f'{total_hours}:{minutes} {meridiem}, {weekday} ({number_of_days} days later)')
else:
if number_of_days == 0:
if minutes < 10:
print(f'{total_hours}:0{minutes} {meridiem}')
else:
print(f'{total_hours}:{minutes} {meridiem}')
if number_of_days == 1:
if minutes < 10:
print(f'{total_hours}:0{minutes} {meridiem} (next day)')
else:
print(f'{total_hours}:{minutes} {meridiem} (next day)')
if number_of_days > 1:
if minutes < 10:
print(f'{total_hours}:0{minutes} {meridiem} ({number_of_days} days later)')
else:
print(f'{total_hours}:{minutes} {meridiem} ({number_of_days} days later)')
return
def add_hours(start, duration, total_minutes, meridiem):
days_passed = 0
total_hours = start + duration + (total_minutes // 60)
days_passed += total_hours // 24
total_hours = total_hours % 24
if meridiem == 'AM':
meridiem_counter = 1
elif meridiem == 'PM':
meridiem_counter = -1
while total_hours >= 12:
total_hours -= 12
meridiem_counter *= -1
if meridiem_counter == 1:
days_passed += 1
if meridiem_counter == 1:
meridiem = 'AM'
else:
meridiem = 'PM'
return total_hours, days_passed, meridiem
def day_of_week(weekday, days_passed):
days_of_week = ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')
weekday = weekday.lower().capitalize()
index = days_of_week.index(weekday)
new_index = index + days_passed
while new_index > 6:
new_index -= 7
weekday = days_of_week[new_index]
return weekday
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36
Challenge Information:
Build a Time Calculator Project - Build a Time Calculator Project