Untitled
unknown
plain_text
2 years ago
1.4 kB
5
Indexable
import pandas as pd import random subjects = ["Physics", "Maths", "Chemistry", "Biology", "Computer", "Games"] day_mapping = { 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4: "Thursday", 5: "Friday" } class_timings = [ "08:00 AM - 09:00 AM", "09:00 AM - 10:00 AM", "10:00 AM - 10:30 AM", "10:30 AM - 11:30 AM", "11:30 AM - 12:30 PM", "12:30 PM - 01:00 PM", "01:00 PM - 02:00 PM", "02:00 PM - 03:00 PM" ] timetable = pd.DataFrame(columns=["Day"] + subjects) for day_number in range(1, 6): day_name = day_mapping[day_number] day_subjects = subjects.copy() random.shuffle(day_subjects) # Initialize a row for the day with the day name day_row = [day_name] + [""] * len(subjects) # Fill in the subjects and breaks in the row for i, timing in enumerate(class_timings): if i % 8 == 0 or i % 8 == 1: # Set the first two timing slots to subjects subject = day_subjects.pop(0) elif i % 8 == 2 or i % 8 == 5: subject = "Break" else: subject = day_subjects.pop(0) if i < 5: day_row[i + 1] = subject # +1 to account for the "Day" column timetable = pd.concat([timetable, pd.DataFrame([day_row], columns=timetable.columns)], ignore_index=True) timetable.set_index("Day", inplace=True) print(timetable)
Editor is loading...