Потоковый ввод
Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.
Если требуется получить и тут же обработать строку, то так и пишем:
Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.
Если требуется получить и тут же обработать строку, то так и пишем:
sys.stdin
Если надо в начале прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()
На картинке представлено 2 варианта.Обработка строки
Полезные функции для работы со строками. Python известен тем, что можно написать код в одну строчку использованием метода вместо перебора списком.
Перечислим наиболее полезные методы:
capitalize() - первая буква большая, остальные маленькие
strip() - удаление пробелов в начале и конце
center(int, chr='') - отцентрирует текст, int - нужное кол-во символов в строке, а chr - символ для добавления в начало и конец
swapcase() - заглавные буквы в прописные, маленькие в большие
lower() - преобразует к нижнему регистру
upper() - преобразует к верхнему регистру
При написании нейронок и ботов обязательно приводите все к нижнему регистру с помощью lower(). При написании ботов часто использую center(), для красивого вывода.
Полезные функции для работы со строками. Python известен тем, что можно написать код в одну строчку использованием метода вместо перебора списком.
Перечислим наиболее полезные методы:
capitalize() - первая буква большая, остальные маленькие
strip() - удаление пробелов в начале и конце
center(int, chr='') - отцентрирует текст, int - нужное кол-во символов в строке, а chr - символ для добавления в начало и конец
swapcase() - заглавные буквы в прописные, маленькие в большие
lower() - преобразует к нижнему регистру
upper() - преобразует к верхнему регистру
При написании нейронок и ботов обязательно приводите все к нижнему регистру с помощью lower(). При написании ботов часто использую center(), для красивого вывода.
Модуль os
Данный модуль предоставляет доступ к уникальным функциям, зависящим от конкретной системы. Атрибут os.name покажет тип операционной системы:
posix — для linux и macOS
nt — для операционных систем семейства Windows
java — для систем, работающих в виртуальной Java-машине (например, Android)
Модуль позволяет создавать, удалять, переименовывать файлы и папки. Возможность менять директорию и писать вместо /foler/file1, /foler/file2 и тд, можно просто сменить директорию через функцию os.chdir().
os.access() - проверить наличие файла и возможность записи/чтение.
os.listdir() - список файлов и вложенных каталогов.
os.path.abspath() - вернет абсолютный путь по относительному.
Полный список и документацию можно посмотреть через dir() и help() соответственно.
Данный модуль предоставляет доступ к уникальным функциям, зависящим от конкретной системы. Атрибут os.name покажет тип операционной системы:
posix — для linux и macOS
nt — для операционных систем семейства Windows
java — для систем, работающих в виртуальной Java-машине (например, Android)
Модуль позволяет создавать, удалять, переименовывать файлы и папки. Возможность менять директорию и писать вместо /foler/file1, /foler/file2 и тд, можно просто сменить директорию через функцию os.chdir().
os.access() - проверить наличие файла и возможность записи/чтение.
os.listdir() - список файлов и вложенных каталогов.
os.path.abspath() - вернет абсолютный путь по относительному.
Полный список и документацию можно посмотреть через dir() и help() соответственно.
Чтобы получать больше полезных материалов по ИТ и бизнесу, присоединяйтесь к сообществу @SelectelNews 🦖
Модуль shutil
Очень смешное название, но библиотека является мощным инструментом для обработки файлов. В прошлом посте говорилось о модуль os. Надо учитывать, что многие задачи решить через него можно, но придется постараться.
Программисты комбинируют os и shutil для достижения наиболее красивого и эффективного кода.
shutil.copyfileobj(fsrc, fdst) - копирует один файл в другой.
shutil.copymode(fsrc, fdst) - копирует права доступа из одного файла в другой.
shutil.copystat(fsrc, fdst) - копирует дату последнего доступа и изменения из одного файла в другой.
Библиотека позволяет так же работать с архивами shutil.get_archive_formats(), чтобы узнать доступные для работы архивы.
Очень смешное название, но библиотека является мощным инструментом для обработки файлов. В прошлом посте говорилось о модуль os. Надо учитывать, что многие задачи решить через него можно, но придется постараться.
Программисты комбинируют os и shutil для достижения наиболее красивого и эффективного кода.
shutil.copyfileobj(fsrc, fdst) - копирует один файл в другой.
shutil.copymode(fsrc, fdst) - копирует права доступа из одного файла в другой.
shutil.copystat(fsrc, fdst) - копирует дату последнего доступа и изменения из одного файла в другой.
Библиотека позволяет так же работать с архивами shutil.get_archive_formats(), чтобы узнать доступные для работы архивы.
Big O
Оптимизация — вот чем приходится постоянно заниматься. Только вопрос — как оценивать скорость? Ведь программы работают с разной скоростью на разных устройствах в зависимости от сборки.
Поэтому программисты пришли к общей оценке названной Big O. К примеру, простой код перебора всех значений это O(n), где n - кол-во этих значений, потому что используется только один цикл, а если два вложенных цикла, вроде программы по распечатки таблицы умножения, то это O(n^2).
По формулам видно, что вторая намного дольше работает. А главное, чем больше элементов, тем дольше будет работать программа.
Тот же бинарный поиск O(log n), намного быстрее, но работает в отсортированном списке. При высчитывании учитывается количество проходов по данным, количество строк кода значения не играет.
На картинке предоставлен график скорости работы алгоритмов, чем меньше операций - тем лучше.
Оптимизация — вот чем приходится постоянно заниматься. Только вопрос — как оценивать скорость? Ведь программы работают с разной скоростью на разных устройствах в зависимости от сборки.
Поэтому программисты пришли к общей оценке названной Big O. К примеру, простой код перебора всех значений это O(n), где n - кол-во этих значений, потому что используется только один цикл, а если два вложенных цикла, вроде программы по распечатки таблицы умножения, то это O(n^2).
По формулам видно, что вторая намного дольше работает. А главное, чем больше элементов, тем дольше будет работать программа.
Тот же бинарный поиск O(log n), намного быстрее, но работает в отсортированном списке. При высчитывании учитывается количество проходов по данным, количество строк кода значения не играет.
На картинке предоставлен график скорости работы алгоритмов, чем меньше операций - тем лучше.
This media is not supported in your browser
VIEW IN TELEGRAM
Dribbble теперь в Telegram!
Самое крупное в мире дизайнерское сообщество зарегистрировалось в Телеграм. Теперь каждый день на этом канале будут публиковаться лучшие работы для вдохновления, иногда уроки, фрибишные исходники и инструменты.
Подписывайся: @Dribbble
Самое крупное в мире дизайнерское сообщество зарегистрировалось в Телеграм. Теперь каждый день на этом канале будут публиковаться лучшие работы для вдохновления, иногда уроки, фрибишные исходники и инструменты.
Подписывайся: @Dribbble
Модуль zipfile
Как говорилось ранее с zip может работать модуль shutil, но zipfile более многофункционален. С другой стороны он не так универсален и работает только с зипами. За все надо платить, не существует идеального способа для всего.
Для начала надо из zipfile импортировать ZipFile. И открыть файл ZipFile(file).
printdir() - вывод списка содержимого текстом для печати.
namelist() - вывод списка фалов списком.
open() - открыть файл внутри архива, далее работа проходит аналогично работе фалов.
Для практики на картинке показана программа выводящая красивый вложенный список файлов находящихся в архиве.
Больше возможностей можно узнать через help() или документацию.
Как говорилось ранее с zip может работать модуль shutil, но zipfile более многофункционален. С другой стороны он не так универсален и работает только с зипами. За все надо платить, не существует идеального способа для всего.
Для начала надо из zipfile импортировать ZipFile. И открыть файл ZipFile(file).
printdir() - вывод списка содержимого текстом для печати.
namelist() - вывод списка фалов списком.
open() - открыть файл внутри архива, далее работа проходит аналогично работе фалов.
Для практики на картинке показана программа выводящая красивый вложенный список файлов находящихся в архиве.
Больше возможностей можно узнать через help() или документацию.
This media is not supported in your browser
VIEW IN TELEGRAM
На Python можно писать всё, от веб-сайтов до искусственного интеллекта и анализа данных.
PYTHON:TODAY - маст-хэв канал, как для новичка, так и для опытных программистов. Освойте одну из самых топовых профессий в мире и работайте хоть из дома, хоть из Тайланда.
На канале вы найдете видео и текстовые трансляции уроков:
- По созданию ботов
- Приложений на смартфон
- Парсингу сайтов
- Шифрованию
- Пентестингу
- Машинному обучению и big data с нуля
Кладезь интересных проектов в одном месте - @python2day
PYTHON:TODAY - маст-хэв канал, как для новичка, так и для опытных программистов. Освойте одну из самых топовых профессий в мире и работайте хоть из дома, хоть из Тайланда.
На канале вы найдете видео и текстовые трансляции уроков:
- По созданию ботов
- Приложений на смартфон
- Парсингу сайтов
- Шифрованию
- Пентестингу
- Машинному обучению и big data с нуля
Кладезь интересных проектов в одном месте - @python2day
Модуль requests
В прошлом посте мы рассмотрели json, формат получаемый от сервера, но его как-то надо получить. В этом поможет библиотека requests, она позволяет отправлять запросы GET и POST, работать с ней просто и новичкам будет очень удобно. С помощью библиотеки просто написать парсер или работать с API какого-то сервиса.
response = requests.get(link) - чтобы отправить запрос GET по адресу. Дальше можно получить ответ в формате json, через соответствующий метод json()
Больше информации в документации, а на картинке показан результат работы API Яндекс.Карт совместно с данной библиотекой. Например, напишем программу, которая по городу будет находить область.
В прошлом посте мы рассмотрели json, формат получаемый от сервера, но его как-то надо получить. В этом поможет библиотека requests, она позволяет отправлять запросы GET и POST, работать с ней просто и новичкам будет очень удобно. С помощью библиотеки просто написать парсер или работать с API какого-то сервиса.
response = requests.get(link) - чтобы отправить запрос GET по адресу. Дальше можно получить ответ в формате json, через соответствующий метод json()
Больше информации в документации, а на картинке показан результат работы API Яндекс.Карт совместно с данной библиотекой. Например, напишем программу, которая по городу будет находить область.
Принципы программирования. Часть 3
Продолжаем разбор принципов программирования
SRP
Single Responsibility Principle - принцип единого уровня ответственности. Похож на SLAP, но больше касается ООП. Каждый объект должен выполнять свою функцию. Нужен новый функционал? Значит надо создать новый объект. Очень просто об этом говорить в небольших проектах, но чем сложнее проект, тем труднее его разбить на отдельные и независимые блоки кода.
OCP
Open-Closed Principle - принцип открытости к расширению. Говорит о том, что код должен расширяться без переписывания и изменения старого. На первый взгляд кажется, что конфликтует с YAGNI, но это не так. YAGNI говорит, что нельзя писать код, который не используется сейчас. OCP затрагивает более глубокие архитектурные вещи.
#Принципы_программирования
Продолжаем разбор принципов программирования
SRP
Single Responsibility Principle - принцип единого уровня ответственности. Похож на SLAP, но больше касается ООП. Каждый объект должен выполнять свою функцию. Нужен новый функционал? Значит надо создать новый объект. Очень просто об этом говорить в небольших проектах, но чем сложнее проект, тем труднее его разбить на отдельные и независимые блоки кода.
OCP
Open-Closed Principle - принцип открытости к расширению. Говорит о том, что код должен расширяться без переписывания и изменения старого. На первый взгляд кажется, что конфликтует с YAGNI, но это не так. YAGNI говорит, что нельзя писать код, который не используется сейчас. OCP затрагивает более глубокие архитектурные вещи.
#Принципы_программирования
Сборка exe файлов - pyinstaller
Давайте немного отвлечемся от программирования и подумаем с кем бы поделится нашей красивой программой или игрой.
Если вы просто скопируете проект, то он не будет работать на других системах где нет установленного Python, а если есть, то возможно там отсутствуют нужные библиотеки. Но можно создать исполняемый файл exe, который запустится и без Python. Необходимо установить pyinstaller:
--noconsole - консоль не будет запускаться при открытии
main.py - файл, при запуске которого начинает работать ваша программа
В папке dist будет лежать нужный файл, остальные созданные папки можно удалить
Внимание! С помощью данного метода не получится скрыть ваш код, так же вы не получите прироста в скорости работы программы.
Давайте немного отвлечемся от программирования и подумаем с кем бы поделится нашей красивой программой или игрой.
Если вы просто скопируете проект, то он не будет работать на других системах где нет установленного Python, а если есть, то возможно там отсутствуют нужные библиотеки. Но можно создать исполняемый файл exe, который запустится и без Python. Необходимо установить pyinstaller:
install pyinstallerЗатем перейти в командную строку, и перейти в нужную директорию с помощью команды cd. Далее напишем такой код:
--onefile --noconsole main.py--onefile - означает, что будет только один исполняемый файл.
--noconsole - консоль не будет запускаться при открытии
main.py - файл, при запуске которого начинает работать ваша программа
В папке dist будет лежать нужный файл, остальные созданные папки можно удалить
Внимание! С помощью данного метода не получится скрыть ваш код, так же вы не получите прироста в скорости работы программы.
Библиотека PIL
Очень хорошая библиотека для работы с изображениями. С её помощью можно много что сделать с картинками в одну строчку: повернуть по градусам, уменьшить количество цветов (и вес, соответственно), обрезать, сделать похожим на рисунок карандашом.
Плюс, с помощью этой библиотеки очень просто перебрать все пиксели и получить их RGB цвет. Библиотека нуждается в установке:
Очень хорошая библиотека для работы с изображениями. С её помощью можно много что сделать с картинками в одну строчку: повернуть по градусам, уменьшить количество цветов (и вес, соответственно), обрезать, сделать похожим на рисунок карандашом.
Плюс, с помощью этой библиотеки очень просто перебрать все пиксели и получить их RGB цвет. Библиотека нуждается в установке:
install pillowДля примера напишем простую программу объединяющую два изображения в одно. Для этого оба изображения сделаем прозрачными, будем делать в равном отношении чтобы ничто не выделялось (поэтому умножаем на 0.5), коэффициент можно изменить.