P
logo
ProgrammingTV
P
logo
0
читателей
ProgrammingTV  
О проекте Просмотр Уровни подписки Фильтры Статистика Обновления проекта Поделиться Метки
Все проекты
О проекте
Миссией данного проекта является разделение с аудиторией инфомацией касательно программирования и технологий. Будут создаваться как детальные статьи с разбором, так и небольшие с вводными сведениями. Тематика будет в основном охватывать языки прорграммирования Ruby, Python, JavaScript, Go; тулзы и системы, которые являются де-факто стандартами в dev/devops индустрии, такие как docker, kubernetes, travis, и т.д., и не очень популярные, но помогающие в решении определенных задач.
Публикации, доступные бесплатно
Уровни подписки
Фильтры
Статистика
Обновления проекта
Контакты
Поделиться
Читать: 6+ мин
P
logo
ProgrammingTV

Разбор исходников программы snips-nlu. Часть 1

Доступно подписчикам уровня
«Уровень 1»
Подписаться за 100₽ в месяц

Читать: 1+ мин
logo Информатика с Натальей Массальской

ЕГЭ по информатике. № 8. Комбинаторика: типы и алгоритмы решения

1. Решаем ‎задачу‏ ‎на ‎количество ‎чисел ‎по ‎условиям‏ ‎тремя ‎способами:‏ ‎аналитически,‏ ‎простым ‎перебором ‎на‏ ‎Python ‎и‏ ‎при ‎помощи ‎библиотеки ‎Python‏ ‎itertools.

2. Решаем‏ ‎задачу ‎на‏ ‎алфавитные ‎последовательности‏ ‎двумя ‎способами: ‎при ‎помощи ‎аналитического‏ ‎трюка‏ ‎и ‎при‏ ‎помощи ‎Python:‏ ‎библиотеки ‎itertools ‎и ‎функции ‎enumerate

3. Ещё‏ ‎один‏ ‎вид‏ ‎задач ‎№‏ ‎8 ‎ЕГЭ‏ ‎по ‎информатике‏ ‎(комбинаторика):‏ ‎составление ‎слов‏ ‎перестановками ‎букв. ‎Рассмотрим ‎простой ‎аналитический‏ ‎подход ‎и‏ ‎разберёмся,‏ ‎как ‎решать ‎задачу‏ ‎с ‎подковырками‏ ‎при ‎помощи ‎библиотеки ‎Python‏ ‎itertools‏ ‎и ‎функции‏ ‎enumerate

Итак, ‎в‏ ‎задаче ‎на ‎комбинаторику ‎два ‎основных‏ ‎типа:

  • подсчёт‏ ‎всех ‎возможных‏ ‎слов ‎/‏ ‎числе ‎на ‎базе ‎заданного ‎алфавита‏ ‎и‏ ‎с‏ ‎дополнительными ‎условиями‏ ‎составления
  • решение ‎задач‏ ‎на ‎алфавитные‏ ‎последовательности

При‏ ‎этом ‎у‏ ‎нас ‎три ‎основных ‎типа ‎решения:

  • аналитический‏ ‎(основная ‎формула‏ ‎комбинаторики)
  • программой‏ ‎с ‎простым ‎переборным‏ ‎алгоритмом
  • в ‎Python‏ ‎— ‎использование ‎модуля ‎itertools

А‏ ‎теперь‏ ‎— ‎за‏ ‎тренировку!



Читать: 1+ мин
logo Информатика с Натальей Массальской

Python: .index() и .find() для поиска в коллекции

💾 Методы ‎.index() и‏ ‎.find() делают ‎одно ‎и ‎то ‎же‏ ‎— ‎ищут‏ ‎первое‏ ‎вхождение ‎чего-либо ‎в‏ ‎свою ‎коллекцию.‏ ‎Только ‎.index() ‎применяется ‎к‏ ‎списку‏ ‎и ‎ищет‏ ‎элемент, ‎а‏ ‎.find() ‎работает ‎со ‎строкой ‎и‏ ‎ищет‏ ‎в ‎ней‏ ‎подстроку.

список.index(элемент)
‎строка.find(подстрока)‏

‎

Вот ‎пример:

s ‎= ‎'12345'
‎x‏ ‎=‏ ‎[1,‏ ‎2, ‎3,‏ ‎4, ‎5]‏
‎print(s.find('3'), ‎x.index(3))‏

‎

Получим‏ ‎2 ‎и‏ ‎2, ‎потому ‎что ‎нумерация ‎элементов‏ ‎и ‎в‏ ‎строках,‏ ‎и ‎в ‎списках‏ ‎идёт ‎с‏ ‎нуля.

Но ‎что ‎будет ‎при‏ ‎использовании‏ ‎методов ‎.index()‏ ‎и ‎.find(),‏ ‎если ‎такого ‎элемента ‎или ‎такой‏ ‎подстроки‏ ‎нет?

Например, ‎для‏ ‎строки ‎и‏ ‎списка ‎из ‎примера ‎выше:

s ‎=‏ ‎'12345'‏
‎x‏ ‎= ‎[1,‏ ‎2, ‎3,‏ ‎4, ‎5]‏

‎print(s.find('7'))‏
‎print(x.index(7))

‎

Метод‏ ‎.find() для ‎отсутствующей ‎строки ‎вернёт ‎-1.‏ ‎Почему ‎не‏ ‎ноль?‏ ‎Потому ‎что ‎нулевая‏ ‎позиция ‎существует.

А‏ ‎вот ‎.index() для ‎отсутствующего ‎элемента‏ ‎сгенерирует‏ ‎ошибку. ‎Проще‏ ‎говоря, ‎программа‏ ‎обругает ‎вас ‎и ‎упадёт, ‎вот‏ ‎так:

ValueError:‏ ‎7 ‎is‏ ‎not ‎in‏ ‎list

Как ‎же ‎бороться ‎с ‎падением‏ ‎программы‏ ‎при‏ ‎использовании ‎.index()?‏ ‎Запросто! ‎Мы‏ ‎должны ‎сначала‏ ‎проверить,‏ ‎есть ‎ли‏ ‎вообще ‎такое ‎значение ‎в ‎списке.‏ ‎И ‎только‏ ‎убедившись,‏ ‎что ‎есть ‎—‏ ‎определяем ‎его‏ ‎позицию:

x ‎= ‎[1, ‎2,‏ ‎3,‏ ‎4, ‎5]‏
‎if ‎7‏ ‎in ‎x:
    ‎print(x.index(7))

‎

Теперь ‎вы‏ ‎точно‏ ‎знаете, ‎как‏ ‎искать ‎элемент‏ ‎в ‎коллекции ‎👍

Читать: 3+ мин
logo Информатика с Натальей Массальской

Python: выводим слова введённой строки, отсортированные по длине

Словами ‎будем‏ ‎считать ‎последовательности ‎букв, ‎разделённых ‎пробелами.‏ ‎Знаки ‎препинания‏ ‎не‏ ‎являются ‎частью ‎слова.

ПРИМЕР:‏ ‎если ‎мы‏ ‎ввели ‎строку

Моя ‎головная ‎боль:‏ ‎математика,‏ ‎физика, ‎информатика.‏

‎

программа ‎должна‏ ‎вывести:

Моя
‎боль
‎физика
‎головная
‎математика‏
‎информатика‏

‎

1. Вводим ‎строку:

s‏ ‎= ‎input()‏

‎

2. Чтобы ‎разбить ‎строку ‎на ‎элементы,‏ ‎используем‏ ‎метод‏ ‎.split(), причём ‎без‏ ‎аргумента, ‎потому‏ ‎что ‎разбивать‏ ‎будем‏ ‎по ‎пробелу.

wrds‏ ‎= ‎s.split()

‎

Переменная ‎wrds ‎теперь‏ ‎— ‎это‏ ‎список‏ ‎строк. ‎Каждая ‎строка‏ ‎— ‎слово,‏ ‎причём ‎со ‎знаком ‎препинания‏ ‎в‏ ‎конце, ‎если‏ ‎он ‎там‏ ‎был. ‎Например, ‎«физика, ‎„.

3. Давайте ‎удалим‏ ‎последний‏ ‎символ ‎каждой‏ ‎подстроки, ‎если‏ ‎это ‎знак ‎препинания. ‎Конечно, ‎мы‏ ‎могли‏ ‎бы‏ ‎сделать ‎это‏ ‎«в ‎лоб»:

# для‏ ‎всех ‎подстрок‏ ‎списка‏
‎for ‎i‏ ‎in ‎range(len(wrds)):
    ‎# ‎если ‎последний‏ ‎символ ‎—‏ ‎знак‏ ‎препинания
    ‎if ‎wrds[i][-1]‏ ‎in ‎'.,:‏ ‎; ‎-?! ‎':
        ‎#‏ ‎заменяем‏ ‎строку ‎на‏ ‎неё ‎без‏ ‎последнего ‎символа
        ‎# ‎(фактически ‎ДО‏ ‎последнего‏ ‎символа)
        ‎wrds[i]‏ ‎= ‎wrds[i][:‏ ‎-1]

‎

Но ‎во-первых, ‎а ‎вдруг‏ ‎там‏ ‎будет‏ ‎случайно ‎затесавшаяся‏ ‎цифра ‎или‏ ‎мы ‎не‏ ‎все‏ ‎знаки ‎препинания‏ ‎вспомнили ‎(вот ‎скобки, ‎например, ‎ещё‏ ‎могут ‎быть).

А‏ ‎во-вторых,‏ ‎знак ‎может ‎быть‏ ‎и ‎в‏ ‎начале ‎слова ‎— ‎та‏ ‎же‏ ‎скобка.

Используем ‎метод‏ ‎.isalpha(), который ‎возвращает‏ ‎True, ‎если ‎аргумент ‎состоит ‎только‏ ‎из‏ ‎букв. ‎И‏ ‎будем ‎проверять‏ ‎с ‎обоих ‎концов ‎слова:

for ‎i‏ ‎in‏ ‎range(len(wrds)):‏
    ‎if ‎not(wrds[i][0].isalpha()):‏ ‎wrds[i] ‎=‏ ‎wrds[i][1:]
    ‎if‏ ‎not(wrds[i][-1].isalpha()):‏ ‎wrds[i] ‎=‏ ‎wrds[i][: ‎-1]

‎

4. Теперь ‎бы ‎надо‏ ‎отсортировать ‎список‏ ‎строк.‏ ‎Но ‎если ‎мы‏ ‎будем ‎делать‏ ‎это ‎запросто:

wrds.sort()

‎

получим ‎(естественно!)‏ ‎сортировку‏ ‎по ‎алфавиту,‏ ‎а ‎это‏ ‎не ‎то, ‎что ‎нам ‎нужно.

Вспомним,‏ ‎что‏ ‎у ‎метода‏ ‎.sort() есть ‎параметр‏ ‎key, позволяющий ‎сортировать ‎элементы ‎списка ‎как‏ ‎угодно:‏ ‎хоть‏ ‎по ‎второму‏ ‎символу ‎строк,‏ ‎хоть ‎по‏ ‎остатку‏ ‎от ‎деления‏ ‎чисел ‎на ‎11.

Причём ‎мы ‎можем‏ ‎функцию-ключ ‎сортировки‏ ‎сделать‏ ‎отдельной ‎функцией, ‎вот‏ ‎так:

def ‎key_func(x):‏
    ‎return ‎len(x)

‎

А ‎можем‏ ‎использовать‏ ‎лямбда-функцию ‎прямо‏ ‎в ‎вызове‏ ‎метода.

Лямбда-функции (напомню) ‎— ‎это ‎крохотные ‎функции‏ ‎без‏ ‎имени, ‎которые‏ ‎реализуются ‎прямо‏ ‎там, ‎где ‎используются.

Наша ‎сортировка ‎по‏ ‎длинам‏ ‎строк‏ ‎будет ‎выглядеть‏ ‎так:

wrds.sort(key=lambda ‎x:‏ ‎len(x))

‎

Параметр‏ ‎лямбда-функции‏ ‎х ‎—‏ ‎это ‎элемент ‎списка, ‎для ‎которого‏ ‎вызывается ‎.sort().‏ ‎То‏ ‎есть ‎в ‎нашем‏ ‎случае ‎—‏ ‎строка.

Что ‎возвращает ‎функция-ключ ‎сортировки‏ ‎—‏ ‎по ‎тому‏ ‎и ‎сортируем.‏ ‎Здесь ‎— ‎по ‎длине ‎строк.

5. Осталось‏ ‎вывести‏ ‎наши ‎строки.‏ ‎Можно, ‎конечно,‏ ‎сделать ‎это ‎попросту:

for ‎x ‎in‏ ‎wrds:‏
    ‎print(x)‏

‎

А ‎можно‏ ‎использовать ‎чуть‏ ‎более ‎мудрёный,‏ ‎но‏ ‎краткий ‎функциональный‏ ‎подход ‎и ‎записать ‎так:

[print(x) ‎for‏ ‎x ‎in‏ ‎wrds]‏

‎

Результат ‎получим ‎один‏ ‎и ‎тот‏ ‎же!

Осталось ‎переписать ‎программу ‎полностью‏ ‎и‏ ‎можно ‎💥‏ ‎сдавать ‎лабу‏ ‎😉

Код ‎программы:

s ‎= ‎input()
‎#‏ ‎разбиваем‏ ‎строку ‎на‏ ‎слова
‎wrds‏ ‎= ‎s.split()

‎# ‎для ‎всех‏ ‎подстрок‏ ‎списка‏
‎for ‎i‏ ‎in ‎range(len(wrds)):‏
    ‎# ‎если‏ ‎последний‏ ‎символ ‎-‏ ‎знак ‎препинания
    ‎if ‎wrds[i][-1] ‎in‏ ‎'.,:;-?!':
        ‎#‏ ‎заменяем‏ ‎строку ‎на ‎неё‏ ‎без ‎последнего‏ ‎символа
        ‎# ‎(фактически ‎ДО‏ ‎последнего‏ ‎символа)
        ‎wrds[i]‏ ‎= ‎wrds[i][:-1]‏

‎# ‎удаляем ‎начальные ‎и ‎конечные‏ ‎знаки‏
‎# ‎препинания‏ ‎из ‎каждого‏ ‎слова
‎for ‎i ‎in ‎range(len(wrds)):‏
    ‎if‏ ‎not(wrds[i][0].isalpha()):‏ ‎wrds[i] ‎=‏ ‎wrds[i][1:]
    ‎if‏ ‎not(wrds[i][-1].isalpha()): ‎wrds[i]‏ ‎=‏ ‎wrds[i][:-1]

‎#‏ ‎сортируем ‎список ‎по ‎длинам ‎строк‏
‎wrds.sort(key=lambda ‎x:‏ ‎len(x))‏
‎# ‎выводим ‎по‏ ‎одному ‎слову‏ ‎на ‎строке
‎[print(x) ‎for‏ ‎x‏ ‎in ‎wrds]‏

‎

Или ‎можете‏ ‎скачать ‎готовым ‎файликом ‎🔽🔽🔽

Смотреть: 18+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 34

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий

Смотреть: 31+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 33

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Читать: 1+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 32.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 37+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 31

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Читать: 1+ мин
logo Лаборатория программирования

Программирование на языке Python. Эпизод 6. Объектные модели и специальные методы. Часть 2

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Эпизод 6. Объектные модели и специальные методы.
Часть 2. Модель "Генератор и итератор".

Читать: 1+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 30

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий

Смотреть: 36+ мин
logo Лаборатория программирования

Программирование на языке Python. Эпизод 6. Объектные модели и специальные методы. Часть 1.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Эпизод 6. Объектные модели и специальные методы.
Часть 1. Теоретическое введение.

Смотреть: 35+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 29

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 25+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 28.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Читать: 1+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 27.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 36+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 26.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 23+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 25.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Читать: 1+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 24.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 45+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 23.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 28+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 22

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других технологий.

Смотреть: 40+ мин
logo Лаборатория программирования

Разработка приложений на Python + Qt (PySide6). Сезон 2. Выпуск 21.

Доступно подписчикам уровня
«Вольный слушатель»
Подписаться за 500₽ в месяц

Разработка прикладного программного обеспечения на языке Python с применением библиотеки Qt (PySide6), СУБД PostgreSQL и других сопутствующих технологий.

Показать еще

Обновления проекта

Статистика

Фильтры

Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

Оплата за этого пользователя будет списываться с вашей карты вплоть до отмены подписки. Код может быть показан на экране или отправлен по почте вместе с инструкцией.

Будет создан код, который позволит адресату получить сумму на баланс.

Разово будет списана указанная сумма и зачислена на баланс пользователя, воспользовавшегося данным промокодом.

Добавить карту
0/2048