class FilmsDB: def __init__(self, s): self.open(s) def open(self, s): f = open(s, "r") self.db = f.readlines() f.close() def filmIdExists(self, n): return n > 0 and n <= len(self.db) def get(self, n): delimiter = ';' if not self.filmIdExists(n): print("Ошибка! Фильма с таким номером в базе не существует!") exit() filmData = [i.strip() for i in self.db[n-1].split(delimiter)] try: film = { 'id': str(n), 'name': filmData[0], 'director': filmData[1], 'duration': filmData[2], 'genre': filmData[3] } except IndexError: print("Ошибка! Количество полей в каждой записи базы данных должно быть 4!") exit() return film def __iter__(self): self.current = 1 return self def __next__(self): if self.filmIdExists(self.current): film = self.get(self.current) self.current += 1 return film raise StopIteration def printDatabase1(films): for film in films: filmData = list(film.values()) print(' / '.join(filmData)) def printDatabase(films): for film in films: print(f"Номер: {film['id']}") print(f"Название: {film['name']}") print(f"Длительность: {film['duration']}") print(f"Жанр: {film['genre']}") print(f"Режиссер: {film['director']}") print() def main(): films = FilmsDB("films.txt") printDatabase(films) print() firstFilm = films.get(1) print(f"Название первого фильма: {firstFilm['name']}") print(f"Длительность первого фильма: {firstFilm['duration']}") print(f"Жанр первого фильма: {firstFilm['genre']}") print(f"Режиссер первого фильма: {firstFilm['director']}") main()