Предмет: Информатика, автор: almasbekowa

помогите(Python)

Идентификационный номер, Фамилия, Имя, Отчество, Адрес, Номер кредитной карточки, Дебет, Кредит, Время междугородных и городских переговоров;
Конструктор;
Методы: установка значений атрибутов, получение значений атрибутов, вывод информации.
Создать массив объектов данного класса. Вывести сведения относительно абонентов, у которых время городских переговоров превышает заданное. Сведения относительно абонентов, которые пользовались междугородной связью. Список абонентов в алфавитном порядке.

Ответы

Автор ответа: rklimow409
1

class Subscriber:

   def __init__(self, id, last_name, first_name, patronymic, address, credit_card_number, debit, credit, local_calls_time, long_distance_calls_time):

       self.id = id

       self.last_name = last_name

       self.first_name = first_name

       self.patronymic = patronymic

       self.address = address

       self.credit_card_number = credit_card_number

       self.debit = debit

       self.credit = credit

       self.local_calls_time = local_calls_time

       self.long_distance_calls_time = long_distance_calls_time

   def set_values(self, id, last_name, first_name, patronymic, address, credit_card_number, debit, credit, local_calls_time, long_distance_calls_time):

       self.id = id

       self.last_name = last_name

       self.first_name = first_name

       self.patronymic = patronymic

       self.address = address

       self.credit_card_number = credit_card_number

       self.debit = debit

       self.credit = credit

       self.local_calls_time = local_calls_time

       self.long_distance_calls_time = long_distance_calls_time

   def get_values(self):

       return (self.id, self.last_name, self.first_name, self.patronymic, self.address, self.credit_card_number, self.debit, self.credit, self.local_calls_time, self.long_distance_calls_time)

   def __str__(self):

       return f"Subscriber(id={self.id}, last_name='{self.last_name}', first_name='{self.first_name}', patronymic='{self.patronymic}', address='{self.address}', credit_card_number='{self.credit_card_number}', debit={self.debit}, credit={self.credit}, local_calls_time={self.local_calls_time}, long_distance_calls_time={self.long_distance_calls_time})"




subscribers = []

# Создание объектов класса Subscriber и добавление их в массив

subscriber1 = Subscriber(1, "Ivanov", "Ivan", "Ivanovich", "Moscow", "1234 5678 9012 3456", 100, 50, 10, 20)

subscribers.append(subscriber1)

subscriber2 = Subscriber(2, "Petrov", "Petr", "Petrovich", "St. Petersburg", "1234 5678 9012 3457", 200, 100, 20, 30)

subscribers.append(subscriber2)

subscriber3 = Subscriber(3, "Sidorov", "Sidor", "Sidorovich", "Novosibirsk", "1234 5678 9012 3458", 300, 150, 30, 40)

subscribers.append(subscriber3)

# Вывод сведений относительно абонентов, у которых время городских переговоров превышает заданное

threshold = 15

for subscriber in subscribers:

   if subscriber.local_calls_time > threshold:

       print(subscriber)

# Вывод сведений относительно абонентов, которые пользовались междугородной связью

for subscriber in subscribers:

   if subscriber.long_distance_calls_time > 0:

       print(subscriber)

# Список абонентов в алфавитном порядке

subscribers.sort(key=lambda subscriber: subscriber.last_name)

for subscriber in subscribers:

   print(subscriber)




Также можно реализовать статический метод класса Subscriber, который будет выполнять сортировку массива объектов класса Subscriber по указанному критерию. Например, метод sort_by_last_name может выглядеть следующим образом:
   @staticmethod

   def sort_by_last_name(subscribers):

       subscribers.sort(key=lambda subscriber: subscriber.last_name)

Этот метод можно вызывать так:

Subscriber.sort_by_last_name(subscribers)



Также можно реализовать класс SubscriberManager, который будет содержать методы для работы с массивом объектов класса Subscriber, например, метод find_by_local_calls_time, который будет возвращать список абонентов, у которых время городских переговоров превышает заданное:

class SubscriberManager:

   def find_by_local_calls_time(subscribers, threshold):

       result = []

       for subscriber in subscribers:

           if subscriber.local_calls_time > threshold:

               result.append(subscriber)

       return result

Этот метод можно вызывать так:

threshold = 15

subscribers = SubscriberManager.find_by_local_calls_time(subscribers, threshold)


slonce70: А если проверить Ваш код или Вы сами его писали!? Готовы Онлайн показать как пишите!?)
Похожие вопросы