Проблема: выводятся не обновленные в функции print_table данные, а те, которые ввели в последнем цикле.
Примечательно, что если функцию не вызывать, а тупо переписать её содержимое (как представлено в коде), то тогда всё работает. Такое ощущение, что находящиеся данные в print_table попросту нельзя использовать дальше, как будто они не сохраняются.
class table:
def __init__(self, name, group, geometry, EC):
self.name = name
self.group = group
self.geometry = geometry
self.EC = EC
def print_header():
print("_______________________________________")
print("| Экзаменационные оценки студентов |")
print("---------------------------------------")
print("| Имя | Группа | Геометрия | ЭВМ |")
print("---------------------------------------")
У вас проблема с обновлением данных в функции `print_table`. Чтобы решить эту проблему, передавайте актуальные данные в функцию как аргументы. Таким образом, функция сможет использовать обновленные значения вместо тех, которые ввели в последнем цикле.