├── README.md ├── homeworks ├── 1.md ├── 2.md ├── 3.md ├── 4.md ├── 5.md └── solution │ ├── 1 │ ├── 1.py │ ├── 2.py │ └── 3.py │ ├── 2 │ ├── 1.py │ └── 2.py │ ├── 3 │ └── 1.py │ ├── 4 │ └── 1.py │ └── 5 │ └── 1.py └── lections_code ├── 1 ├── Readme.md ├── dictonary.py ├── input_print.py └── just_data.py ├── 2 ├── Readme.md ├── cycle_while.py ├── if_elif_else.py ├── todo.py └── true_false.py ├── 3 ├── Readme.md ├── functios.py └── todo.py ├── 4 ├── Readme.md └── echobot.py └── 5 ├── Readme.md └── todobot.py /README.md: -------------------------------------------------------------------------------- 1 | # Домашние задания для курса «Python-разработка для начинающих» 2 | 3 | Домашние задания для курса «Python-разработка для начинающих» 4 | 5 | ## Код с леций: 6 | 1. [Знакомство с Python](./lections_code/1/) 7 | 2. [Первая программа](./lections_code/2/) 8 | 3. [Функции. Разработка приложения ToDo](./lections_code/3/) 9 | 4. [Создаем первого Telegram-бота](./lections_code/4/) 10 | 5. [Превращаем программу ToDo в бота](./lections_code/5/) 11 | 12 | ## Список заданий 13 | 1. [Знакомство с Python](homeworks/1.md) 14 | 2. [Первая программа](homeworks/2.md) 15 | 3. [Функции. Разработка приложения ToDo](homeworks/3.md) 16 | 4. [Создаем первого Telegram-бота](homeworks/4.md) 17 | 5. [Превращаем программу ToDo в бота](homeworks/5.md) 18 | 19 | 20 | --- 21 | Любые вопросы по решению задач задавайте в чате в [Telegram](https://t.me/+UvcXDintFXVmMWJi). -------------------------------------------------------------------------------- /homeworks/1.md: -------------------------------------------------------------------------------- 1 | # Домашнее задание к занятию 1. Знакомство с Python 2 | 3 | ## Задание 1 4 | Напишите программу, которая последовательно запрашивает у пользователя Дату и Описание задачи, а затем выводит их через пробел. 5 | 6 | Пример ввода-вывода программы: 7 | ``` 8 | Введите дату: Сегодня 9 | Введите задачу: Сделать все дела 10 | Сегодня Сделать все дела 11 | ``` 12 | 13 | ## Задание 2 14 | Модифицируйте программу из задания 1 таким образом, чтобы запрос даты и задачи выполнялся трижды и после этого результаты выводились на экран построчно в формате: на одной строчке дата и задача через пробел. 15 | 16 | Пример ввода-вывода программы: 17 | ``` 18 | Введите дату: Сегодня 19 | Введите задачу: Выучить Python 20 | Введите дату: Завтра 21 | Введите задачу: Разработать TODO-приложение 22 | Введите дату: Послезавтра 23 | Введите задачу: Разработать Telegram-бота 24 | Сегодня Выучить Python 25 | Завтра Разработать TODO-приложение 26 | Послезавтра Разработать Telegram-бота 27 | ``` 28 | 29 | ## Задание 3 30 | Модифицируйте программу из задания 2 таким образом, чтобы данные не выводились на экран, а сохранялись в словарь. Ключами в этом словаре должны быть даты, а значениями - соответствующие им задачи. 31 | 32 | Пример ввода программы: 33 | ``` 34 | Введите дату: Сегодня 35 | Введите задачу: Выучить Python 36 | Введите дату: Завтра 37 | Введите задачу: Разработать TODO-приложение 38 | Введите дату: Послезавтра 39 | Введите задачу: Разработать Telegram-бота 40 | ``` 41 | Это задание не предполагает вывод информации на экран. 42 | 43 | ### Подсказки 44 | * Для запроса данных у пользователя используйте функцию `input`. 45 | * Для вывода данных на экран используйте функцию `print`. 46 | * Сохраняйте нужные вам данные в переменные. 47 | 48 | *** 49 | 50 | ## Инструкция по выполнению домашнего задания 51 | 52 | Для выполнения домашнего задания мы рекомендуем использовать интегрированную среду разработки (IDE) GigaIDE. С инструкцией об установке и работе с Giga IDE вы можете ознакомиться в [личном кабинете](https://netology.ru/profile/program/pyfree-async/lessons/153987/lesson_items/2575585). 53 | 54 | Любые вопросы по решению задач задавайте в чате в [Telegram](https://t.me/+UvcXDintFXVmMWJi). 55 | 56 | [пример решения](./solution/1/) 57 | -------------------------------------------------------------------------------- /homeworks/2.md: -------------------------------------------------------------------------------- 1 | # Домашнее задание к занятию 2. Первая программа 2 | 3 | Продолжим совершенствовать наше ToDo приложение. 4 | 5 | ## Задание 1 6 | Модифицируйте программу, написанную на занятии так, чтобы выход из нее осуществлялся не только при вводе неизвестной команды, но и при вводе специальной команды `exit`. Сделайте так, чтобы при вводе этой команды программа выводила на экран текст: "Спасибо за использование! До свидания!" 7 | 8 | Пример ввода-вывода программы: 9 | ``` 10 | Введите команду 11 | exit 12 | Спасибо за использование! До свидания! 13 | ``` 14 | 15 | ## Задание 2 16 | Давайте усложним нашу программу. 17 | Сделайте следующие изменения: 18 | 1. Заведите 3 списка: today, tomorrow, other (вы можете назвать переменные по-другому). 19 | 2. Измените блок кода, который выполняет команду `add`: 20 | * Дополнительно запросите у пользователя дату выполнения задачи. 21 | * В зависимости от введенной даты добавьте задачу в один из списков по следующим правилам: 22 | * Если пользователь ввел "Сегодня", добавьте задачу в список today. 23 | * Если пользователь ввел "Завтра", добавьте задачу в список tomorrow. 24 | * Если пользователь ввел любое другое значение, добавьте задачу в список other. 25 | 26 | *** 27 | 28 | ## Инструкция по выполнению домашнего задания 29 | 30 | Для выполнения домашнего задания мы рекомендуем использовать интегрированную среду разработки (IDE) GigaIDE. С инструкцией об установке и работе с Giga IDE вы можете ознакомиться в [личном кабинете](https://netology.ru/profile/program/pyfree-async/lessons/153987/lesson_items/2575585). 31 | 32 | Любые вопросы по решению задач задавайте в чате в [Telegram](https://t.me/+UvcXDintFXVmMWJi). 33 | 34 | [пример решения](./solution/1/) 35 | -------------------------------------------------------------------------------- /homeworks/3.md: -------------------------------------------------------------------------------- 1 | # Домашнее задание к занятию 3. Функции. Разработка приложения ToDo 2 | 3 | ## Задание 1 4 | Реализуйте функцию `count_letter`, которая принимает список слов и некоторую букву и возвращает количество слов в списке, в которых эта буква встречается хотя бы один раз. 5 | 6 | Например, для списка `['python', 'c++', 'c', 'scala', 'java']` и буквы `c` ваша функция должна вернуть число 3. 7 | 8 | ### Подсказки 9 | - Используйте конструкцию `for word in ...` для итерации по списку. 10 | - Используйте переменную для хранения промежуточного результата подсчета. 11 | - Используйте конструкцию `letter in word` для проверки наличия буквы в слове. 12 | 13 | ## Задание 2 14 | Зарегистрируйтесь на сайте https://www.pythonanywhere.com/. 15 | 16 | ## Инструкция по выполнению домашнего задания 17 | 18 | Для выполнения домашнего задания мы рекомендуем использовать интегрированную среду разработки (IDE) GigaIDE. С инструкцией об установке и работе с Giga IDE вы можете ознакомиться в [личном кабинете](https://netology.ru/profile/program/pyfree-async/lessons/153987/lesson_items/2575585). 19 | 20 | Любые вопросы по решению задач задавайте в чате в [Telegram](https://t.me/+UvcXDintFXVmMWJi). 21 | 22 | [пример решения](./solution/1/) 23 | -------------------------------------------------------------------------------- /homeworks/4.md: -------------------------------------------------------------------------------- 1 | # Домашнее задание к занятию 4. Создаем первого Telegram-бота 2 | 3 | ## Задание 1 4 | Модифицируйте нашего ЭхоБота таким образом, чтобы в ответ на сообщение, в котором присутствует ваше имя, он не повторял его, а отвечал: "Ба! Знакомые все лица!" 5 | 6 | ### Подсказки 7 | 1. Вам не нужно писать новых функций, достаточно модифицировать ту, что мы написали на занятии. 8 | 2. Используйте конструкцию `if word in string` для того, чтобы проверить, входит ли слово `word` в строку `string`. 9 | 10 | ## Инструкция по выполнению домашнего задания 11 | 12 | Для выполнения домашнего задания мы рекомендуем использовать интегрированную среду разработки (IDE) GigaIDE. С инструкцией об установке и работе с Giga IDE вы можете ознакомиться в [личном кабинете](https://netology.ru/profile/program/pyfree-async/lessons/153987/lesson_items/2575585). 13 | 14 | Любые вопросы по решению задач задавайте в чате в [Telegram](https://t.me/+UvcXDintFXVmMWJi). 15 | 16 | [пример решения](./solution/1/) 17 | -------------------------------------------------------------------------------- /homeworks/5.md: -------------------------------------------------------------------------------- 1 | # Домашнее задание к занятию 5. Превращаем программу ToDo в бота 2 | 3 | ## Задание 1 4 | Расширьте функциональность бота возможностью на ваш выбор. 5 | Примеры дополнительных возможностей: 6 | * Выводить ошибку при добавлении задачи, в которой меньше 3х символов. 7 | * Печатать задачи на несколько дат: принимать в команде `print` не одну дату, а произвольное количество. 8 | * При добавлении задачи учитывать отдельным параметром ее категорию. При выводе печатать категории задач со знаком @: Помыть посуду @Домашние дела. 9 | 10 | 11 | *** 12 | 13 | ## Инструкция по выполнению домашнего задания 14 | 15 | Для выполнения домашнего задания мы рекомендуем использовать интегрированную среду разработки (IDE) GigaIDE. С инструкцией об установке и работе с Giga IDE вы можете ознакомиться в [личном кабинете](https://netology.ru/profile/program/pyfree-async/lessons/153987/lesson_items/2575585). 16 | 17 | Любые вопросы по решению задач задавайте в чате в [Telegram](https://t.me/+UvcXDintFXVmMWJi). 18 | 19 | [пример решения](./solution/1/) 20 | -------------------------------------------------------------------------------- /homeworks/solution/1/1.py: -------------------------------------------------------------------------------- 1 | date = input('Введите дату: ') 2 | task = input('Введите задачу: ') 3 | 4 | s = date + ' ' + task 5 | print(s) 6 | # Необязательно заводить переменную s, можно было написать: 7 | # (Следующую строку можно раскомментировать) 8 | # print(date + ' ' + task) 9 | # Или даже: 10 | # (Следующую строку можно раскомментировать) 11 | # print(date, task) 12 | # print может выводить на экран сразу несколько строк через пробел 13 | -------------------------------------------------------------------------------- /homeworks/solution/1/2.py: -------------------------------------------------------------------------------- 1 | date_1 = input('Введите дату: ') 2 | task_1 = input('Введите задачу: ') 3 | date_2 = input('Введите дату: ') 4 | task_2 = input('Введите задачу: ') 5 | date_3 = input('Введите дату: ') 6 | task_3 = input('Введите задачу: ') 7 | 8 | # Как вы уже знаете из предыдущего задания, 9 | # print(s1, s2) выведет на экран строки s1 и s2, поставив между ними пробел (по умолчанию) 10 | # Мы воспользуемся этим свойством print, чтобы вывести на экран наши данные 11 | print(date_1, task_1) 12 | print(date_2, task_2) 13 | print(date_3, task_3) -------------------------------------------------------------------------------- /homeworks/solution/1/3.py: -------------------------------------------------------------------------------- 1 | # Создаем пустой словарь, в который затем будем добавлять записи 2 | task_dict = {} 3 | 4 | date = input('Введите дату: ') 5 | task = input('Введите задачу: ') 6 | task_dict[date] = task 7 | 8 | date = input('Введите дату: ') 9 | task = input('Введите задачу: ') 10 | task_dict[date] = task 11 | 12 | 13 | date = input('Введите дату: ') 14 | task = input('Введите задачу: ') 15 | task_dict[date] = task 16 | 17 | # Если хотите лучше понять это решение - добавьте вывод на экран после каждого пользовательского ввода 18 | # print(date, task) 19 | # print(task_dict) 20 | # Вы увидите, что переменные date и task изменяются, но данные в словаре task_dict остаются неизменными -------------------------------------------------------------------------------- /homeworks/solution/2/1.py: -------------------------------------------------------------------------------- 1 | HELP = """ 2 | help - напечатать справку по программе. 3 | add - добавить задачу в список (название задачи запрашиваем у пользователя). 4 | show - напечатать все добавленные задачи.""" 5 | 6 | tasks = [] 7 | 8 | run = True 9 | 10 | while run: 11 | command = input("Введите команду: ") 12 | if command == "help": 13 | print(HELP) 14 | elif command == "show": 15 | print(tasks) 16 | elif command == "add": 17 | task = input("Введите название задачи: ") 18 | tasks.append(task) 19 | print("Задача добавлена") 20 | elif command == 'exit': 21 | print('Спасибо за использование! До свидания!') 22 | run = False 23 | else: 24 | print("Неизвестная команда") 25 | break 26 | -------------------------------------------------------------------------------- /homeworks/solution/2/2.py: -------------------------------------------------------------------------------- 1 | today = list() # today = [] # список можно создать двумя способами: today = list() или today = [] 2 | tomorrow = list() # tomorrow = [] 3 | other = list() # other = [] 4 | 5 | HELP = """ 6 | help - напечатать справку по программе. 7 | add - добавить задачу в список (название задачи запрашиваем у пользователя). 8 | show - напечатать все добавленные задачи.""" 9 | 10 | run = True 11 | 12 | while run: 13 | command = input("Введите команду: ") 14 | if command == "help": 15 | print(HELP) 16 | elif command == 'show': 17 | print('Сегодня') 18 | print(today) 19 | print('Завтра') 20 | print(tomorrow) 21 | print('Другие') 22 | print(other) 23 | elif command == 'add': 24 | date = input('Введите дату: ') 25 | task = input('Введите задачу: ') 26 | if date == 'Сегодня': 27 | today.append(task) 28 | elif date == 'Завтра': 29 | tomorrow.append(task) 30 | else: 31 | other.append(task) 32 | print(f'Задача {task} добавлена') 33 | elif command == 'exit': 34 | print('Спасибо за использование! До свидания!') 35 | run = False 36 | else: 37 | print("Неизвестная команда") 38 | break 39 | -------------------------------------------------------------------------------- /homeworks/solution/3/1.py: -------------------------------------------------------------------------------- 1 | def counter_letter(worlds, letter): 2 | """Считает количество слов в списке по заданному символу""" 3 | 4 | count = 0 # создаём счётчик 5 | for world in worlds: # проходимся по каждому слову world в списке слов worlds 6 | if letter.lower() in world.lower(): # приводим к нижнему регистру 7 | count += 1 # это то же самое что и count = count + 1 8 | return count # возвращаем результат 9 | 10 | 11 | worlds = ['python', 'c++', 'c', 'scala', 'java'] # пример списка 12 | letter = 'c' # букву, которую ищем 13 | 14 | result = counter_letter(worlds, letter) # вызываем функцию 15 | print(result) # выводим результат 16 | -------------------------------------------------------------------------------- /homeworks/solution/4/1.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | 3 | token = '' 4 | 5 | bot = telebot.TeleBot(token) 6 | 7 | my_name = 'Дима' 8 | 9 | 10 | @bot.message_handler(content_types=["text"]) 11 | def echo(message): 12 | if my_name in message.text: 13 | text = 'Ба! Знакомые все лица' 14 | else: 15 | text = message.text 16 | bot.send_message(message.chat.id, text) 17 | 18 | 19 | bot.polling(none_stop=True) 20 | -------------------------------------------------------------------------------- /homeworks/solution/5/1.py: -------------------------------------------------------------------------------- 1 | from random import choice 2 | 3 | import telebot 4 | 5 | token = '' 6 | 7 | bot = telebot.TeleBot(token) 8 | 9 | 10 | RANDOM_TASKS = ['Написать Гвидо письмо', 'Выучить Python', 'Записаться на курс в Нетологию', 'Посмотреть 4 сезон Рик и Морти'] 11 | 12 | todos = dict() 13 | 14 | 15 | HELP = ''' 16 | Список доступных команд: 17 | * print - напечатать все задачи на заданную дату 18 | * add - добавить задачу 19 | * random - добавить на сегодня случайную задачу 20 | * all - вывод всех заданий для всех дат 21 | * help - Напечатать help 22 | ''' 23 | 24 | 25 | def add_todo(date, task): 26 | date = date.lower() 27 | if todos.get(date) is not None: 28 | todos[date].append(task) 29 | else: 30 | todos[date] = [task] 31 | 32 | 33 | @bot.message_handler(commands=['help']) 34 | def help(message): 35 | bot.send_message(message.chat.id, HELP) 36 | 37 | 38 | @bot.message_handler(commands=['random']) 39 | def random(message): 40 | task = choice(RANDOM_TASKS) 41 | add_todo('сегодня', task) 42 | bot.send_message(message.chat.id, f'Задача {task} добавлена на сегодня') 43 | 44 | 45 | @bot.message_handler(commands=['add']) 46 | def add(message): 47 | _, date, tail = message.text.split(maxsplit=2) 48 | task = ' '.join([tail]) 49 | # TODO: 1 50 | if len(task) < 3: 51 | bot.send_message(message.chat.id, 'Задачи должны быть больше 3х символов') 52 | else: 53 | add_todo(date, task) 54 | bot.send_message(message.chat.id, f'Задача {task} добавлена на дату {date}') 55 | 56 | 57 | @bot.message_handler(commands=['print']) 58 | def print_(message): 59 | # TODO: 2 и 3 60 | dates = message.text.split(maxsplit=1)[1].lower().split() 61 | response = '' 62 | for date in dates: 63 | tasks = todos.get(date) 64 | response += f'*{date}*: \n' 65 | for task in tasks: 66 | response += f'@{task}\n' 67 | response += '\n' 68 | bot.send_message(message.chat.id, response, parse_mode='MarkdownV2') # TODO: 5 69 | 70 | 71 | @bot.message_handler(commands=['all']) 72 | def all_(message): # TODO: 4 73 | response = '' 74 | for date, tasks in todos.items(): 75 | response += f'*{date}*: \n' 76 | for task in tasks: 77 | response += f'@{task}\n' 78 | response += '\n' 79 | bot.send_message(message.chat.id, response, parse_mode='MarkdownV2') # TODO: 5 80 | 81 | 82 | bot.polling(none_stop=True) -------------------------------------------------------------------------------- /lections_code/1/Readme.md: -------------------------------------------------------------------------------- 1 | ## Знакомство с Python 2 | 3 | 1. [Простые типы данных](just_data.py) 4 | 2. [Словарь](dictonary.py) 5 | 3. [Ввод вывод](input_print.py) 6 | -------------------------------------------------------------------------------- /lections_code/1/dictonary.py: -------------------------------------------------------------------------------- 1 | # cat: кошка 2 | # bat: летучая мышь 3 | 4 | # ключ : значение 5 | 6 | dictionary = { 7 | "cat": "кошка", 8 | "bat": "летучая мышь" 9 | } 10 | 11 | # print(dictionary) 12 | # cat = dictionary["cat"] 13 | # print(cat) 14 | 15 | countries = { 16 | "Африка": ["Египет", "Конго", "ЮАР"], 17 | "Азия": ["Китай", "Таиланд", "Индонезия"] 18 | } 19 | 20 | africa = countries["Африка"] 21 | print(africa) 22 | 23 | africa_key = "Африка" 24 | print(countries[africa_key]) 25 | 26 | countries["Европа"] = ["Австрия", "Испания", "Италия"] 27 | print(countries) 28 | print(countries["Европа"]) 29 | # countries[0] = "Hello" 30 | # print(countries) 31 | africa.append("Эфиопия") 32 | print(africa) 33 | print(countries) 34 | print(len(countries["Африка"])) 35 | -------------------------------------------------------------------------------- /lections_code/1/input_print.py: -------------------------------------------------------------------------------- 1 | name = input("Введите имя: ") 2 | 3 | print("Привет", name) -------------------------------------------------------------------------------- /lections_code/1/just_data.py: -------------------------------------------------------------------------------- 1 | strings = ["Hello", "world"] 2 | numbers = [1, 2, 3, 4, 5] 3 | data = ["hello", 1] 4 | 5 | print(strings) 6 | print(numbers) 7 | print(data) 8 | 9 | summa = numbers + data 10 | print(summa) 11 | 12 | numbers.append(6) 13 | print(numbers) 14 | 15 | first = strings[0] 16 | second = strings[1] 17 | print(first) 18 | print(second) 19 | 20 | strings_length = len(strings) 21 | print(strings_length) 22 | 23 | s = sum(numbers) 24 | print(s) -------------------------------------------------------------------------------- /lections_code/2/Readme.md: -------------------------------------------------------------------------------- 1 | ## Первая программа 2 | 3 | 1. [Тип данных bool](true_false.py) 4 | 2. [Условия](if_elif_else.py) 5 | 3. [Шаблон TODO-приложения](todo.py) 6 | 4. [Цикл while](cycle_while.py) 7 | -------------------------------------------------------------------------------- /lections_code/2/cycle_while.py: -------------------------------------------------------------------------------- 1 | x = 1 2 | while x <= 10: 3 | print(x) 4 | x = x + 1 5 | 6 | print(x) -------------------------------------------------------------------------------- /lections_code/2/if_elif_else.py: -------------------------------------------------------------------------------- 1 | name = input("Введите имя: ") 2 | login = "Dima" 3 | # name = "Yo" 4 | if name == login: # <- False 5 | # Выражение True 6 | print("Hello", name) 7 | elif len(name) < 3: # <- True 8 | print("Такое имя недопустимо") 9 | elif name == "Yo": # <- True 10 | print("Yo, bro") 11 | else: 12 | # Выражение False 13 | print("Hello, user!") 14 | 15 | print("The end") -------------------------------------------------------------------------------- /lections_code/2/todo.py: -------------------------------------------------------------------------------- 1 | HELP = """ 2 | help - напечатать справку по программе. 3 | add - добавить задачу в список (название задачи запрашиваем у пользователя). 4 | show - напечатать все добавленные задачи.""" 5 | 6 | tasks = [] 7 | 8 | run = True 9 | 10 | while run: 11 | command = input("Введите команду: ") 12 | if command == "help": 13 | print(HELP) 14 | elif command == "show": 15 | print(tasks) 16 | elif command == "add": 17 | task = input("Введите название задачи: ") 18 | tasks.append(task) 19 | print("Задача добавлена") 20 | else: 21 | print("Неизвестная команда") 22 | break 23 | 24 | print("До свидания!") -------------------------------------------------------------------------------- /lections_code/2/true_false.py: -------------------------------------------------------------------------------- 1 | name = input("Введите имя: ") 2 | print(name) 3 | name1 = "Dima" 4 | print(name == name1) 5 | True, False -------------------------------------------------------------------------------- /lections_code/3/Readme.md: -------------------------------------------------------------------------------- 1 | ## Функции. Разработка приложения ToDo 2 | 3 | 1. [Функции](functios.py) 4 | 2. [Приложение ToDo](todo.py) 5 | -------------------------------------------------------------------------------- /lections_code/3/functios.py: -------------------------------------------------------------------------------- 1 | def multiply(a, b): 2 | print("a = ", a) 3 | print("b = ", b) 4 | result = a * b 5 | return result 6 | 7 | c = multiply(3, 5) 8 | print("a = ", 3) 9 | print("b = ", 5) 10 | c = 3 * 5 11 | print(c) 12 | c = multiply(7, 5) 13 | print(c) 14 | c = multiply(3, 518) 15 | print(c) 16 | 17 | 18 | def print_hello(): 19 | print("Hello") 20 | print("World") 21 | 22 | print_hello() 23 | print_hello() 24 | 25 | def my_input(prompt): 26 | print(prompt) 27 | inp = ... 28 | return inp -------------------------------------------------------------------------------- /lections_code/3/todo.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | HELP = """ 4 | help - напечатать справку по программе. 5 | add - добавить задачу в список (название задачи запрашиваем у пользователя). 6 | show - напечатать все добавленные задачи. 7 | random - добавлять случайную задачу на дату Сегодня""" 8 | 9 | RANDOM_TASKS = ["Записаться на курс в Нетологию", "Написать Гвидо письмо", "Покормить кошку", "Помыть машину"] 10 | 11 | tasks = { 12 | 13 | } 14 | 15 | # Сегодня, Завтра, 31.12 ... 16 | # [Задача1, Задача2, Задача3] 17 | # Дата -> [Задача1, Задача2, Задача3] 18 | 19 | 20 | run = True 21 | 22 | def add_todo(date, task): 23 | if date in tasks: 24 | # Дата есть в словаре 25 | # Добавляем в список задачу 26 | tasks[date].append(task) 27 | else: 28 | # Даты в словаре нет 29 | # Создаем запись с ключом date 30 | tasks[date] = [] 31 | tasks[date].append(task) 32 | print("Задача ", task, " добавлена на дату ", date) 33 | 34 | while run: 35 | command = input("Введите команду: ") 36 | if command == "help": 37 | print(HELP) 38 | elif command == "show": 39 | date = input("Введите дату для отображения списка задач: ") 40 | if date in tasks: 41 | for task in tasks[date]: 42 | print('- ', task) 43 | else: 44 | print("Такой даты нет") 45 | elif command == "add": 46 | date = input("Введите дату для добавления задачи: ") 47 | task = input("Введите название задачи: ") 48 | add_todo(date, task) 49 | elif command == "random": 50 | task = random.choice(RANDOM_TASKS) 51 | add_todo("Сегодня", task) 52 | else: 53 | print("Неизвестная команда") 54 | break 55 | 56 | print("До свидания!") -------------------------------------------------------------------------------- /lections_code/4/Readme.md: -------------------------------------------------------------------------------- 1 | ## Создаем первого Telegram-бота 2 | 3 | [Эхо-бот](echobot.py) 4 | -------------------------------------------------------------------------------- /lections_code/4/echobot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | 3 | token = '' 4 | 5 | bot = telebot.TeleBot(token) 6 | 7 | 8 | @bot.message_handler(content_types=["text"]) 9 | def echo(message): 10 | bot.send_message(message.chat.id, message.text) 11 | 12 | 13 | bot.polling(none_stop=True) 14 | -------------------------------------------------------------------------------- /lections_code/5/Readme.md: -------------------------------------------------------------------------------- 1 | ## Превращаем программу ToDo в бота 2 | 3 | [ToDo-бот](todobot.py) -------------------------------------------------------------------------------- /lections_code/5/todobot.py: -------------------------------------------------------------------------------- 1 | from random import choice 2 | 3 | import telebot 4 | 5 | token = '' 6 | 7 | bot = telebot.TeleBot(token) 8 | 9 | 10 | RANDOM_TASKS = ['Написать Гвидо письмо', 'Выучить Python', 'Записаться на курс в Нетологию', 'Посмотреть 4 сезон Рик и Морти'] 11 | 12 | todos = dict() 13 | 14 | 15 | HELP = ''' 16 | Список доступных команд: 17 | * print - напечатать все задачи на заданную дату 18 | * add - добавить задачу 19 | * random - добавить на сегодня случайную задачу 20 | * help - Напечатать help 21 | ''' 22 | 23 | 24 | def add_todo(date, task): 25 | date = date.lower() 26 | if todos.get(date) is not None: 27 | todos[date].append(task) 28 | else: 29 | todos[date] = [task] 30 | 31 | 32 | @bot.message_handler(commands=['help']) 33 | def help(message): 34 | bot.send_message(message.chat.id, HELP) 35 | 36 | 37 | @bot.message_handler(commands=['random']) 38 | def random(message): 39 | task = choice(RANDOM_TASKS) 40 | add_todo('сегодня', task) 41 | bot.send_message(message.chat.id, f'Задача {task} добавлена на сегодня') 42 | 43 | 44 | @bot.message_handler(commands=['add']) 45 | def add(message): 46 | _, date, tail = message.text.split(maxsplit=2) 47 | task = ' '.join([tail]) 48 | add_todo(date, task) 49 | bot.send_message(message.chat.id, f'Задача {task} добавлена на дату {date}') 50 | 51 | 52 | @bot.message_handler(commands=['print']) 53 | def print_(message): 54 | date = message.text.split()[1].lower() 55 | if date in todos: 56 | tasks = '' 57 | for task in todos[date]: 58 | tasks += f'[ ] {task}\n' 59 | else: 60 | tasks = 'Такой даты нет' 61 | bot.send_message(message.chat.id, tasks) 62 | 63 | 64 | bot.polling(none_stop=True) 65 | --------------------------------------------------------------------------------