I am unable to call the function and print result

from datetime import datetime, timedelta

def get_shift_schedule(start_date,num_weeks):
    shift_schedule = []
    current_date = start_date
    for i in range(num_weeks):
        week_number = i + 1
        day_shift_start = current_date
        afternoon_shift_start = current_date + timedelta(days=14)
        night_shift_start = current_date + timedelta(days=28)
        shift_schedule.append({
            "Week": week_number,
            "Day Shift": day_shift_start.strftime("%A, %d %B"),
            "Afternoon Shift": afternoon_shift_start.strftime("%A, %d %B"),
            "Night Shift": night_shift_start.strftime("%A, %d %B")
        })
        current_date += timedelta(days=42)
        return shift_schedule

    start_date = datetime.strptime("2024-03-11", "%Y-%m-%d")
    num_weeks = 52
    shift_schedule = get_shift_schedule(start_date, num_weeks)

    for shift in shift_schedule:
        print("Week", shift["Week"])
        print("Day Shift:", shift["Day Shift"])
        print("Afternoon Shift:", shift["Afternoon Shift"])
        print("Night Shift:", shift["Night Shift"])
        print()

Please copy your ENTIRE code as shown here:

format_code

Afterwards, check if it is formatted as it is on your computer to make sure it has been entered correctly.

It appears that your code had improper indentation towards the lower half:


from datetime import datetime, timedelta

def get_shift_schedule(start_date, num_weeks):
    
    shift_schedule = []
    current_date = start_date
    
    for i in range(num_weeks):
        
        week_number = i + 1
        day_shift_start = current_date
        afternoon_shift_start = current_date + timedelta(days = 14)
        night_shift_start = current_date + timedelta(days = 28)
        
        shift_schedule.append({
            "Week": week_number,
            "Day Shift": day_shift_start.strftime("%A, %d %B"),
            "Afternoon Shift": afternoon_shift_start.strftime("%A, %d %B"),
            "Night Shift": night_shift_start.strftime("%A, %d %B")
        })
        
        current_date += timedelta(days=42)
        return shift_schedule

start_date = datetime.strptime("2024-03-11", "%Y-%m-%d")
num_weeks = 52
shift_schedule = get_shift_schedule(start_date, num_weeks)

for shift in shift_schedule:
    
    print("Week", shift["Week"])
    print("Day Shift:", shift["Day Shift"])
    print("Afternoon Shift:", shift["Afternoon Shift"])
    print("Night Shift:", shift["Night Shift"])
    print()

Just a small suggestion. Try and space out your code slightly so that it is both easier to read and to debug.

1 Like