Build a Time Calculator Project - Build a Time Calculator Project

Tell us what’s happening:

What is the expected output for question 8. I have passed every other test

Your code so far

day_of_the_week = ['monday', "tuesday", "wednesday", "thursday", "friday", "saturday", 'sunday']
def add_time(start, duration, date = ""):
  #? Start from 0 to -2||Start from -2 to -1
  time = start[:-2]
  meridiem = start[-2:].lower()
  date = date.lower()
  day_counter = 0

  hours = int(''.join(i for i in time if i != ':'))
  time_elapsed = int(''.join(i for i in duration if i != ':'))

 
  while time_elapsed != 0: 
    #* This calc remaining time
    if time_elapsed < 1200:
      hours += time_elapsed

      if hours >= 1200:
        meridiem = 'pm' if meridiem == 'am' else 'am'
        day_counter += 1 if meridiem == 'am' else 0 
        hours -= 1200
      time_elapsed = 0  

    if time_elapsed >= 1200:
      hours += 1200
      time_elapsed -= 1200

      if hours >= 1200:
        meridiem = 'pm' if meridiem == 'am' else 'am'
        day_counter += 1 if meridiem == 'am' else 0 
        hours -= 1200


  hour = int(str(hours)[:-2])
  minutes = int(str(hours)[-2:])
  
  while int(minutes) >= 60:
    minutes -= 60
    hour += 1

    if minutes < 10:
      minutes = f'0{str(minutes)}'
    if hour == 12:
      meridiem = 'pm' if meridiem == 'am' else 'am'
      day_counter += 1 if meridiem == 'am' else 0 

  #* This is for 12 O'clock timmings
  formated_time = f'{hour}:{minutes} {meridiem.upper()}' if hour else f'12:{minutes} {meridiem.upper()}'

  
  if date:
    start_index = day_of_the_week.index(date)
    #* Index = the remainder||Seven is the number of days in a week 
    end_index = (start_index + day_counter) % 7
    day = day_of_the_week[end_index].capitalize()

    if day_counter:
      formated_counter = f'{day} (next day)' if day_counter == 1 else f'{day} ({day_counter} days later)'
      return f'{formated_time}, {formated_counter}'
    else:
      return f'{formated_time}, {day}'
  #* returns below if no date input
  else:
    if day_counter:
      formated_counter = '(next day)' if day_counter == 1 else f'({day_counter} days later)'
      return f'{formated_time} {formated_counter}'
    else:
      return f'{formated_time}'
      
 
print(add_time('3:30 PM', '00:00'))

Your browser information:

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

Challenge Information:

Build a Time Calculator Project - Build a Time Calculator Project

I input add_time(‘3:30 PM’, ‘00:00’) and receive 3:30 PM back in the console. But am still unable to pass

I have discovered the issue.

if minutes < 10:
    minutes = f'0{str(minutes)}'
if hour == 12:
    meridiem = 'pm' if meridiem == 'am' else 'am'
    day_counter += 1 if meridiem == 'am' else 0 

The if blocks above were indented into the while loop below so it does not always perform its checks

while int(minutes) >= 60:
    minutes -= 60
    hour += 1
hour = int(str(hours)[:-2])
hour = int(str(hours)[:-2]) if len(str(hours)) > 2 else 0

The first line will result in a ValueError if you input 11:00 am/pm, 1:00.
This is because there in no int inside the var

 #* This is for 12 O'clock timmings
  formated_time = f'{hour}:{minutes} {meridiem.upper()}' if hour else f'12:{minutes} {meridiem.upper()}'