Build a Time Calculator Project - Build a Time Calculator Project

Tell us what’s happening:

I am getting an output but it is in decimal places and not in a standard time format

Your code so far

def add_time(start, duration, weekday = False):
    weekday_index = {'Monday': 0, 'Tuesday': 1, 'Wednesday': 2, 'Thursday': 3, 'Friday': 4, 'Saturday': 5, 'Sunday': 6}
    weekday_array = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    duration_tuple = duration.partition(':')
    duration_minutes = int(duration_tuple[2])
    duration_hours = int(duration_tuple[0])

    start_tuple = start.partition(':')
    start_minutes_tuple = start_tuple[2].partition(' ')
    start_hours = int(start_tuple[0])
    start_minutes = int(start_tuple[0])
    am_pm = start_minutes_tuple[2]
    am_pm_switch = {'AM': 'PM', 'PM': 'AM'}

    days_amount = int(duration_hours) / 24

    end_minutes = start_minutes + duration_minutes
    if end_minutes >= 60:
        start_hours += 1
        end_minutes = end_minutes % 60
    amount_of_am_pm_switches = int((start_hours + duration_hours) / 12)
    end_hours = start_hours + duration_hours

    end_minutes = end_minutes if end_minutes > 9 else '0' + str(end_minutes)
    end_hours = end_hours = 12 if end_hours % 12 == 0 else end_hours % 12
    if am_pm == 'PM' and start_hours + (duration_hours % 12) >= 12:
        days_amount += 1

    am_pm = am_pm_switch[am_pm] if amount_of_am_pm_switches % 2 == 1 else am_pm

    print(amount_of_am_pm_switches)
    print(days_amount)

    return_time = str(end_hours) + ':' + str(end_minutes) + ' ' + am_pm
    if weekday:
        weekday = weekday.lower()
        weekday = weekday[0].upper() + weekday[1:]
        index = int((weekday_index[weekday]) + days_amount) % 7
        new_day = weekday_array[index]
        return_time += ', ' + new_day

        if days_amount == 1:
            return return_time + ' ' + '(next day)'
        elif days_amount < 2 and amount_of_am_pm_switches > 1:
            return return_time +' ' + '(next day)'
        elif days_amount >= 2:
            return return_time +' (' + str(int(days_amount)) + 'days later'

add_time('3:30 PM', '2:12')

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36

Challenge Information:

Build a Time Calculator Project - Build a Time Calculator Project

To check what function actually returns, wrap it with the print, ie.:

print(add_time('3:30 PM', '2:12'))

thanks for the suggestion, however, it doesn’t change the return of the function

it doesn’t change the return, but it allows you to check what it returns

to make it even more clear we can write print("output", add_time('3:30 PM', '2:12')). And now seeing the terminal there is output None: your function returns None