Untitled

mail@pastecode.io avatar
unknown
plain_text
6 months ago
2.3 kB
2
Indexable
Never
students = ("Mat Plu", "Pat Sam", "Woj Sid")
courses = ("Python", "MO", "PAJ")

attendance = {}

def enter_attendance():
    for student in students:
        attendance[student] = {}
        for course in courses:
            attendance[student][course] = [False] * 15

# def students_att(attendance):
#     for student in students:
#         print(f"Attendance for {student}:")
#         for course in courses:
#             print(f"{course}: {attendance[student][course]}")
#         print()

def presence(attendance):
    name = input("Enter name: ")
    course = input("Enter course: ")
    week = int(input("Enter week: "))

    try:
        if name not in attendance:
            raise KeyError("Invalid name")
        if course not in courses:
            raise KeyError("Invalid course")
        if week < 0 or week >= 15:
            raise ValueError("Invalid week")

        attendance[name][course][week] = True

    except (KeyError, ValueError) as e:
        print("ERROR:", e)


# def attendance_percentage(attendance):
#     for student in students:
#         print(f"Attendance percentage for {student}:")
#         for course in courses:
#             total_classes = len(attendance[student][course])
#             attended_classes = sum(attendance[student][course])
#             percentage = (attended_classes / total_classes) * 100
#             print(f"{course}: {percentage:.2f}%")
#         print()

def attendance_summary(attendance):
    summary = []
    for student in students:
        for course in courses:
            total_classes = len(attendance[student][course])
            attended_classes = sum(attendance[student][course])
            percentage = (attended_classes / total_classes) * 100
            summary.append((student, course, percentage))
    return summary

enter_attendance()

while True:
    print("Enter name, course, and week to add presence (or enter 'q' to quit):")
    input_str = input()
    if input_str == "q":
        break
    presence(attendance)

# students_att(attendance)
# attendance_percentage(attendance)

summary = attendance_summary(attendance)
print("Attendance Summary:")
for item in summary:
    print(f"{item[0]} - {item[1]}: {item[2]:.2f}%")