Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

помогите исправить задачу

Влад Иванов Знаток (265), закрыт 4 года назад
class Person:
def __init__(self, name, otch, surn, x):
self.name = name
self.otch = otch
self.surn = surn
self.x = x

def get_phone(self):
if 'private' in self.x:
return self.x['private']
else:
return

def get_name(self):
return f'{self.surn} {self.name} {self.otch}'

def get_work_phone(self):
if 'work' in self.x:
return self.x['work']
else:
return

def get_sms_text(self):
return f'Уважаемый {self.name} {self.otch}! Примите участие в нашем беспроигрышном конкурсе для физических лиц'

class Company:
def __init__(self, name, tp, x, *a):
self.name = name
self.tp = tp
self.x = x
self.a = a

def get_phone(self):
if 'contact' in self.x:
return self.x['contact']
elif 'contact' not in self.x:
for i in self.a:
if not i.get_work_phone():
return
else:
return i.get_work_phone()

def get_name(self):
return self.name

def get_sms_text(self):
return f'Для компании {self.name} есть супер предложение! Примите участие ' \
f'в нашем беспроигрышном конкурсе для {self.tp}'

def send_sms(*objects):
for e in objects:
if e.get_phone():
print(f'Отправлено СМС на номер {e.get_phone()} c текстом: {e.get_sms_text()}')
else:
print(f'Не удалось отправить сообщение абоненту: {e.get_name()}')

person1 = Person("Ivan", "Ivanovich", "Ivanov", {"private": 123, "work": 456})
person2 = Person("Ivan", "Petrovich", "Petrov", {"private": 789})
person3 = Person("Ivan", "Petrovich", "Sidorov", {"work": 789})
person4 = Person("John", "Unknown", "Doe", {})
company1 = Company("Bell", "ООО", {"contact": 111}, person3, person4)
company2 = Company("Cell", "АО", {"non_contact": 222}, person2, person3)
company3 = Company("Dell", "Ltd", {"non_contact": 333}, person2, person4)
send_sms(person1, person2, person3, person4, company1, company2, company3)

Выводит это:
Отправлено СМС на номер 123 c текстом: Уважаемый Ivan Ivanovich! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Отправлено СМС на номер 789 c текстом: Уважаемый Ivan Petrovich! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Не удалось отправить сообщение абоненту: Sidorov Ivan Petrovich
Не удалось отправить сообщение абоненту: Doe John Unknown
Отправлено СМС на номер 111 c текстом: Для компании Bell есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для ООО
Не удалось отправить сообщение абоненту: Cel

File is too long to be displayed fully

Должно это:
Отправлено СМС на номер 123 c текстом: Уважаемый Ivan Ivanovich! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Отправлено СМС на номер 789 c текстом: Уважаемый Ivan Petrovich! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Не удалось отправить сообщение абоненту: Sidorov Ivan Petrovich
Не удалось отправить сообщение абоненту: Doe John Unknown
Отправлено СМС на номер 111 c текстом: Для компании Bell есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для ООО
Отправлено СМС на номер 789 c текстом: Для компании Cell есть супер предложение

я так понял проблема тут
def get_phone(self):
if 'contact' in self.x:
return self.x['contact']
elif 'contact' not in self.x:
for i in self.a:
if not i.get_work_phone():
return
else:
return i.get_work_phone()
Лучший ответ
Остальные ответы
Аглая Шниц Искусственный Интеллект (136849) 5 лет назад
мне вот эта ботва непонятна:
for i in self.a:
if not i.get_work_phone():
return
это, типа, если у первого же сотрудника не нашел рабочий телефон, то расплакался и вышел?
Влад ИвановЗнаток (265) 5 лет назад
вообщем там нужно тип не нашел у первого ищи у второго но я не понял как это сделать
Аглая Шниц Искусственный Интеллект (136849) емнип, вместо ретурн ставь continue
Похожие вопросы