Untitled
unknown
plain_text
2 years ago
2.3 kB
21
Indexable
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}%")
Editor is loading...