Untitled
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}%")