С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/103: Рейтинг темы: голосов - 103, средняя оценка - 4.68
14 / 14 / 1
Регистрация: 19.03.2020
Сообщений: 26

СМС-рассылка

19.03.2020, 19:39. Показов 21567. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для создания смс-рассылки напишите классы Person и Company, а также функцию send_sms.
Объект класса Person при инициализации принимает значения имени, отчества и фамилии человека, а также словарь с номерами его телефонов.
Класс должен содержать следующие методы:

get_phone() – возвращает телефон из словаря по ключу 'private' или None, если такого телефона нет,
get_name() – возвращает фамилию, имя и отчество человека через пробел,
get_work_phone() – возвращает телефон из словаря по ключу 'work' или None, если такого телефона нет,
get_sms_text() – возвращает текст «Уважаемый <имя> <отчество>! Примите участие в нашем беспроигрышном конкурсе для физических лиц».
Объект класса Company при инициализации принимает название компании, тип компании, словарь с её телефонами, а также неограниченное количество работников компании (объектов класса Person).
Класс должен содержать следующие методы:

get_phone() – возвращает телефон из словаря по ключу 'contact', если его нет, то телефон первого работника, у которого есть телефон по ключу 'work', или None, если таких работников не найдётся,
get_name() – возвращает название компании,
get_sms_text() – возвращает текст «Для компании <название компании> есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для <тип компании>».
Функция send_sms должна принимать неограниченное количество объектов класса Person или Company и в случае, если найден номер для отправки (с помощью метода get_phone()), выводить сообщение «Отправлено СМС на номер <номер> с текстом: <Текст СМС>», иначе – текст «Не удалось отправить сообщение абоненту: <ФИО человека или название компании>».

Пример 1
Ввод Вывод
from solution import Person, Company, send_sms

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 с текстом: Уважаемый Ivan Ivanovich! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Отправлено СМС на номер 789 с текстом: Уважаемый Ivan Petrovich! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Не удалось отправить сообщение абоненту: Sidorov Ivan Petrovich
Не удалось отправить сообщение абоненту: Doe John Unknown
Отправлено СМС на номер 111 с текстом: Для компании Bell есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для ООО
Отправлено СМС на номер 789 с текстом: Для компании Cell есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для АО
Не удалось отправить сообщение абоненту: Dell
Пример 2
Ввод Вывод
from solution import Person, Company, send_sms

person1 = Person("Степан", "Петрович", "Джобсов", {"private": 555})
person2 = Person("Боря", "Иванович", "Гейтсов", {"private": 777, "work": 888})
person3 = Person("Семен", "Робертович", "Возняцкий", {"work": 789})
person4 = Person("Леонид", "Арсенович", "Торвальдсон", {})
company1 = Company("Яблочный комбинат", "ООО", {"contact": 111}, person1, person3)
company2 = Company("ПластОкно", "АО", {"non_contact": 222}, person2)
company3 = Company("Пингвинья ферма", "Ltd", {"non_contact": 333}, person4)
send_sms(person1, person2, person3, person4, company1, company2, company3)
Отправлено СМС на номер 555 с текстом: Уважаемый Степан Петрович! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Отправлено СМС на номер 777 с текстом: Уважаемый Боря Иванович! Примите участие в нашем беспроигрышном конкурсе для физических лиц
Не удалось отправить сообщение абоненту: Возняцкий Семен Робертович
Не удалось отправить сообщение абоненту: Торвальдсон Леонид Арсенович
Отправлено СМС на номер 111 с текстом: Для компании Яблочный комбинат есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для ООО
Отправлено СМС на номер 888 с текстом: Для компании ПластОкно есть супер предложение! Примите участие в нашем беспроигрышном конкурсе для АО
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2020, 19:39
Ответы с готовыми решениями:

СМС-рассылка
Для создания смс-рассылки напишите классы Person и Company, а также функцию send_sms. Объект класса Person при инициализации принимает...

"СМС-рассылка" как исправить программу?
Для создания смс-рассылки напишите классы Person и Company, а также функцию send_sms. Объект класса Person при инициализации принимает...

Рассылка
нужна помощь в создании бота,который может отправлять одно и тоже сообщение одновременно с разных аккаунтов

2
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
20.03.2020, 18:34
Лучший ответ Сообщение было отмечено fsdjfj как решение

Решение

fsdjfj, держи студент! я сегодня добрый просто самому для практики захотелось решить.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class Person:
    
    def __init__(self, name, oth,surname, numbook):
        self.name = name
        self.oth = oth
        self.surname = surname
        self.numbook = numbook
        
    def get_phone(self, key = 'private'): 
        return self.numbook.get(key)
        
    def get_name(self):
        return f'{self.surname} {self.name} {self.oth}'
 
    def get_work_phone(self):
        return self.get_phone('work')
    
    def get_sms_text(self):
        return f'Уважаемый {self.name} {self.oth}! \
Примите участие в нашем беспроигрышном конкурсе для физических лиц'
 
    
class Company:
    
    def __init__(self, name, type_, numbook, *arg):
        self.name = name
        self.type_ = type_ 
        self.numbook = numbook
        self.person = arg
        
    def get_phone(self, key = 'contact'):
        if key in self.numbook:
            return self.numbook.get(key)
        for person in self.person:
            number = person.get_work_phone()
            if number:
                return number
        
    def get_name(self):
        return f'{self.name}'
 
    def get_work_phone(self):
        return self.get_phone()
    
    def get_sms_text(self):
        return f'Для компании {self.name} есть супер предложение! \
Примите участие в нашем беспроигрышном конкурсе для {self.type_}'
 
 
def send_sms(*obj):
    for ob in obj:
        number = ob.get_phone()
        if number:
            print(f'Отправлено СМС на номер {number} \
с текстом: {ob.get_sms_text()}')
        else:
            print(f'Не удалось отправить сообщение абоненту: {ob.get_name()}')
 
if __name__ == '__main__':
    print('TEST 1  ___________________')
    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)
    print('TEST 2  ___________________')
    person1 = Person("Степан", "Петрович", "Джобсов", {"private": 555})
    person2 = Person("Боря", "Иванович", "Гейтсов", {"private": 777, "work": 888})
    person3 = Person("Семен", "Робертович", "Возняцкий", {"work": 789})
    person4 = Person("Леонид", "Арсенович", "Торвальдсон", {})
    company1 = Company("Яблочный комбинат", "ООО", {"contact": 111}, person1, person3)
    company2 = Company("ПластОкно", "АО", {"non_contact": 222}, person2)
    company3 = Company("Пингвинья ферма", "Ltd", {"non_contact": 333}, person4)
    send_sms(person1, person2, person3, person4, company1, company2, company3)
надеюсь хватит мозгов записать это в файл solution и подать на тест как модуль.
8
5 / 5 / 0
Регистрация: 07.11.2021
Сообщений: 21
30.03.2022, 22:39
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class Person:
    
    def __init__(self, name, otch, famil, nomera):
        self.name = name
        self.otch = otch
        self.famil = famil
        self.nomera = nomera
        
    def get_phone(self):
        if 'private' in self.nomera:
            return self.nomera['private']
        else:
            return None
    
    def get_name(self):
        return f'{self.famil} {self.name} {self.otch}'
    
    def get_work_phone(self):
        if 'work' in self.nomera:
            return self.nomera['work']
        else:
            return None
        
    def get_sms_text(self):
        return f'Уважаемый {self.name} {self.otch}! Примите участие в нашем беспроигрышном конкурсе для физических лиц'
    
    
class Company:
    
    def __init__(self, nazvanie, tip, telefone, *args):
        self.persons = []
        for i in args:
            self.persons.append(i)
        self.nazvanie = nazvanie
        self.tip = tip
        self.telefone = telefone
        
    def get_phone(self):
        n = 0
        if 'contact' in self.telefone:
            return self.telefone['contact']
        else:
            for i in self.persons:
                if i.get_work_phone() is not None and n < 1:
                    return i.get_work_phone()
                    n += 1
            if n == 0:
                return None
    
    def get_name(self):
        return self.nazvanie
    
    def get_sms_text(self):
        return f'Для компании {self.nazvanie} есть супер предложение! Примите ' \
               f'участие в нашем беспроигрышном конкурсе для {self.tip}'
    
 
def send_sms(*args):
    for i in args:
        if i.get_phone() is not None:
            print(f'Отправлено СМС на номер {i.get_phone()} с текстом: {i.get_sms_text()}')
        else:
            print(f'Не удалось отправить сообщение абоненту: {i.get_name()}')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2022, 22:39
Помогаю со студенческими работами здесь

Рассылка
Добрый день. учу змеюку.. пока не очень получаеться. есть задача: СУТЬ: Есть файлик (формат не важен, но пусть будет xls) в...

Рассылка оценок
Рассылка оценок Преподаватель Елена Семеновна в конце семестра подсчитывает итоговую оценку и делает рассылку, где сообщает каждому...

Что не так в моём коде? Спам рассылка gmail
Здравствуйте, помогите пожалуйста исправить код. Не отправляется письмо получателю. Что я сделал не так? import smtplib from...

Рассылка результатов
Помогите, пожалуйста, решить задачу Преподаватель Елена Семеновна в конце семестра подсчитывает итоговую оценку и делает рассылку, где...

Рассылка подписчикам бота
Как можно реализовать рассылку людям, подписавшимся на бота? (Библиотека telebot). Пробовал искать в гугле, но мне всегда выбивало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru