def add_new_record(phonebook: pb.Phonebook, new_record: rec.Record) -> pb.Phonebook or None: """ Добавление новой записи в данную телефонную книгу. Функция работает в бесконечном цикле до тех пор, пока не выявится ошибка, либо не завершится успешно. В цикле происходит проверка на совпадение с существующей записью в данной телефонной книге :param phonebook: данная телефонная книга, в которую добавляется новая запись (pb.Phonebook) :param new_record: новая запись (rec.Record) :return: измененная телефонная книга (pb.Phonebook), либо, в случае какой-либо ошибки, None """ while True: if pb.similar_record_in_phonebook(phonebook, new_record): print(ms.MENU_TO_SOLVE_SIMILAR_RECORD) choice, err = get_unambiguous_choice(2) if err: return if choice == 0: phonebook.delete_records(lambda x: x.firstname == new_record.firstname and x.lastname == new_record.lastname) if choice == 1: new_record = edit_record(phonebook, new_record, edit_when_add=True) if new_record is None: return else: phonebook.append(new_record) return phonebook