en
Feedback
Python Lounge: работа и стажировки для программистов

Python Lounge: работа и стажировки для программистов

Open in Telegram

Здесь можно найти интересующую вас работу и стажировки для программистов, а так же полезные статьи про Python. Размещение вакансии только - @perezvonyubot Ссылка на канал: @python_lounge Мы входим в сеть promopoisk.com Реклама: @adtgassetsbot

Show more
4 245
Subscribers
No data24 hours
-157 days
-6530 days
Posts Archive
Пишем простой сайт на Python. Часть 4: Публикация в сети Интернет В самом начале мы работали с локальном сервером. Теперь узнаем, как его разместить в интернете. Мы будем искать виртуальный сервер под наши нужды. Погнали с нами читать в Яндекс.Дзен, мы уже создали там свой канал.

Приветствую вас, дорогие питонисты и питонистки! 3 часть получилась в формате Instant View, так как пост содержал очень большой код. Приступаем читать и затем кодить!

Так, кто тут у нас только что проснулся? Расскажу-ка я вам, с чего начинать обучение Python. Синтаксис В первую очередь: - операции с целыми и вещественными числами; - типы данных; - переменные, ветвления, стандартный ввод/вывод; - логические операции, операции сравнения; - условия: if, else, elif; - блоки, отступы; - строки и символы; - циклы while, for; - операторы break, continue; - установка и подключение модулей; - списки; - функции; - словари; - интерпретатор: установка, запуск скрипта; - файловый ввод/вывод. IDE и редакторы кода Писать в IDLE или Python Shell удобно только простой код, но для проектов лучше найти интегрированную среду разработки (IDE) или редактор кода. IDE включает в себя редактор с подсветкой синтаксиса и автодополнением, инструменты сборки, выполнения и отладки и другие функции. В большинстве редакторов есть подсветка синтаксиса и форматирование, выполнение и отладка кода. Как правило, этот инструмент работает быстрее IDE, но имеет меньше функций. Среди самых популярных платформ — PyCharm, Wing IDE, Komodo и другие. Больше вариантов — в нашем обзоре. Git С распределенной системой управления версиями (Git) нужно познакомиться в начале обучения. Среди основных навыков — создание и перемещение файлов в каталогах, инициализация Git-репозитория и создание коммитов, а также настройка репозиториев в GitHub.

Обработка Cookies Теперь научимся получать cookies. Они передаются на сервер и доступны в переменной os.environ (словарь, cookies хранятся по ключу HTTPCOOKIE). Они передаются в виде пар ключ=значение, что не очень удобно при обработке. Для упрощения работы можно использовать модуль http.cookies. Напишем простой скрипт (/cgi-bin/cookie.py), проверяющий, установлена ли кука, и если нет, устанавливает: #!/usr/bin/env python3 import os import http.cookies cookie = http.cookies.SimpleCookie(os.environ.get("HTTPCOOKIE")) name = cookie.get("name") if name is None: print("Set-cookie: name=value") print("Content-type: text/html\n") print("Cookies!!!") else: print("Content-type: text/html\n") print("Cookies:") print(name.value) Открываем страницу, запоминаем результат и обновляем страницу. Не следует хранить в cookies важные данные, и не полагайтесь на выставленный вами срок хранения. Cookies можно удалить или изменить вручную в браузере. На этом 2 часть заканчивается. Завтра будем писать прототип приложения типа "Twitter".

Х5 проводит масштабный контест по машинному обучению, успейте зарегистрироваться!   RetailHero - это не одно, а сразу три соревнования и конференция 15 февраля 2020! Разыгрываются 1 600 000 ₽ призовых 💰    Организаторами были подготовлены три задачи, чтобы учесть вкусы самых искушённых участников:    ✨ Каким клиентам нужно отправить SMS?  Вы не раз могли слышать про Uplift моделирование. А теперь - наконец-то можно его попробовать реализовать самим! В этой задаче необходимо подготовить список клиентов, ранжированный по эффективности коммуникации.  https://retailhero.ai/c/uplift_modeling/    ✨ Какие товары клиент купит в следующий раз?  Более серьезная задача, где будет еще и немного ML Engineering с условиями еще и по нагрузке на решение. Тут участникам предстоит построить рекомендательную систему и при этом сделать сервис, который выдержит нагрузку.  https://retailhero.ai/c/recommender_syst…    ✨ Как расставить товары по полкам?  Для любителей Computer Science, алгоритмов и оптимизации, ACM-style задача. Нужно реализовать алгоритм, который сможет найти самую эффективную расстановку товаров.  https://retailhero.ai/c/shelf_allocation…    Участвовать можно хоть в одном соревновании, хоть в двух, хоть в трёх, на ваш выбор! 🙂  Можно в команде. А можно в составах разных команд - в каждой задаче в новой команде 👍🏻  Канал для всех задач в slack ods.ai: https://app.slack.com/client/T040HKJE3/C…    Регистрация на соревнование и конференцию, подробное описание задач на странице Retail Hero:  https://retailhero.ai/

Сегодня мы пропустим познавательную статейку и начнём разбираться с Cookies. 2/3 часть, вторая половина. Cookies (печеньки) — небольшой фрагмент данных, отправленный веб-сервером и сохраняемый на компьютере пользователя Браузер всякий раз при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в составе HTTP-запроса. Отправка печенек осуществляется заголовком Set-cookie: #!/usr/bin/env python3 print("Set-cookie: name=value; expires=Wed May 18 03:33:20 2033; path=/cgi-bin/; httponly") print("Content-type: text/html\n") print("Cookies!!!") Например, если сохранить этот скрипт в /cgi-bin/cookie.py и зайти на localhost:8000/cgi-bin/cookie.py, то вам поставится печенька с именем name и значением value. Срок её хранения до мая 2033 года. Все эти параметры не являются обязательными. Вечером попробуем обработать cookies.

В первой части мы научились писать Hello world. Сегодня мы рассмотрим более сложную вещь - обработку данных форм. Создадим в нашей папке файл index.html со следующим содержимым: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Обработка данных форм</title> </head> <body> <form action="/cgi-bin/form.py"> <input type="text" name="TEXT_1"> <input type="text" name="TEXT_2"> <input type="submit"> </form> </body> </html> А в папке cgi-bin/ - файл form.py (обработчик формы) #!/usr/bin/env python3 import cgi form = cgi.FieldStorage() text1 = form.getfirst("TEXT_1", "не задано") text2 = form.getfirst("TEXT_2", "не задано") print("Content-type: text/html\n") print("""<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Обработка данных форм</title> </head> <body>""") print("<h1>Обработка данных форм!</h1>") print("<p>TEXT_1: {}</p>".format(text1)) print("<p>TEXT_2: {}</p>".format(text2)) print("""</body> </html>""") Попробуем это в действии. Запускаем локальный сервер, и переходим на localhost:8000: Готово, теперь мы научились обрабатывать данные из форм. Завтра научимся работать с Cookies.

Доброе утро, питонисты 🙃 Сегодняшний день я планирую начать с полезных советов для программиста, которые я и сам использую. Настройте ваши подписки Обычный человек потребляет в почте, соцсетях, Telegram множество контента. Не тратьте время на ерунду и бесцельный сёрфинг! Выпилите из ленты котиков и прочую милоту, оставьте только полезное. Так, обыденно просматривая новости в различных каналах, вы сможете попутно учиться. Кейсы, новости отрасли, советы разработчиков чаще будут у вас перед глазами. Используйте для обучения сервисы Кому-то нравится читать, а кому-то — смотреть видео. Есть сервисы с игровыми механиками. На мой взгляд, лучше всего для тренировки навыков программирования подходит CodeFights: если я вижу, что кто-то сделал код быстрее или интереснее, у меня азарт просыпается. Ещё есть сервис CodeCombat, мобильные приложения: Code School, CodeHS, Free Code Camp и так далее. P.S не расслабляйтесь, сегодня вас ждёт 2 часть создании сайтов, а именно - обработка форм.

Пишем простой сайт на Python. Часть 1/3 Сегодня разберём создание страницы при помощи CGI-скриптов. Настройка локального сервера. В Python уже встроен CGI сервер, поэтому его настройка не составит труда. from http.server import HTTPServer, CGIHTTPRequestHandler server_address = ("", 8000) httpd = HTTPServer(server_address, CGIHTTPRequestHandler) httpd.serve_forever() Теперь откройте браузер и в адресной строке наберите localhost:8000 Теперь в той папке, где мы запустили сервер, создаём папку cgi-bin (у меня она уже создана). В этой папке создаём скрипт hello.py со следующим содержимым: #!/usr/bin/env python3 print("Content-type: text/html") print() print("<h1>Hello world!</h1>") Первая строка говорит о том, что это Python скрипт (CGI-скрипты можно не только на Python писать). Вторая строка пишет заголовок. Он обозначает, что это будет html файл (бывает ещё css, javascript, pdf и куча других, и браузер различает их по заголовкам). Третья строка отделяет заголовки от тела ответа. Четвёртая печатает Hello world. Теперь переходим на localhost:8000/cgi-bin/hello.py И радуемся! В следующей части будет обработка форм и cookies.

Закрытый чат канала Python Lounge (ограничение участия (бесплатно, но нужно пройти отбор), но зато только отборный контент и самые крутые кодеры)
Anonymous voting

Тут появились на рынке ребята, которые меняют индустрию обучения программированию и математики в России Если вы преподавтаель по математике или программированию - напишите @PolinaDS Если вы хотите работать в компании (сейчас набирают штат разработчиков - работа удаленно по всему миру) - напишите @Lyubov_Kokhanchuk За трудоустройство от вас обещают видеоуроки по одному из курсов или модное Худи с большим капюшоном от Progy https://progyschool.ru/skidkinewyear2020 И отличная новость! Готовим посты и начинаем вас радовать контентом уже с 10 января - осталось подождать немного. Зато будет много контента, много на английском, видео. Ну и мы запускаем закрытый чат, как туда попасть расскажем в ближайшие дни!

Есть заказ. Сейчас поймем насколько интересно 1-2 раза в неделю делать подборки заказов и постить их, например в четверг или пятницу
Anonymous voting

Разница между генераторными выражениями и генераторами коллекций Сначала предлагаю сравнить следующие две строчки кода: a = [i for i in range(5)] x = (i for i in range(5)) Единственная разница в этих двух записях – скобки; в первой строчки они квадратные, а во второй – круглые. Сообщу заранее, что значением переменной a является список, а переменная x хранит в себе генератор. Можем в этом убедиться, распечатав обе переменные: print(a) print(x) # [0, 1, 2, 3, 4] # <generator object <genexpr> at 0x1079d4050> В первом варианте всё должно быть более менее понятно, а если нет, то рекомендую прочитать пост про генераторы коллекций. Переменная x, как уже выяснилось, хранит в себе по сути самый обычный генератор. Про генераторы на канале также был отдельный пост. Можем получить его значения с помощью цикла: for i in x: print(i, end=' ') # 0 1 2 3 4 Но вот возникает вопрос, а что использовать то? Здесь всё тоже достаточно просто. Если вам нужен результат в виде списка прямо сейчас для дальнейшего выполнения программы, то используйте генераторные выражения. А если же значения понадобятся еще не скоро или вообще неизвестно, понадобится ли они вообще, то предпочтительнее генераторы, чтобы не занимать лишнюю память и не нагружать систему.

3 способа добавить элемент в список Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например добавлять новые элементы. 1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде. arr = [1, 2] arr.append(3) # [1, 2, 3] 2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения. Таким образом, list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x). arr = [1, 2] arr.insert(1, 3) # [1, 3, 2] 3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции. arr = [1, 2] arr2 = [3, 4] arr.extend(arr2) # [1, 2, 3, 4] Тема должна быть достаточно легкая и знакомая многим, но повторенье – мать ученья. P. S. Кстати, оцените новый логотип ;)

Логические any и all Одна из многих причин, почему Python является таким популярным языком, заключается в том, что он читаем и выразителен. Предлагаю взглянуть на следующий код: statements = [True, True, False] if any(statements): print('Как минимум одно выражение истинно') if all(statements): print('Все выражения истинны') if any(statements) and not all(statements): print('Как минимум одно выражение истинно и одно не истинно') Функция any возвращает значение True, если хотя бы одно из переданных утверждений верно, all – когда все верны. На мой взгляд, эти две функции заслуживают отдельного внимания всего лишь из-за их простоты в использовании.

Перестановки (Permutations) itertools.permutations генерирует перестановки, возвращая итерируемый объект. Полагаю, не надо объяснять, как с их помощью вы можете сбрутить чей-то пароль? >>> import itertools >>> for p in itertools.permutations('ABCD'): ... print(p) ('A', 'B', 'C', 'D') ('A', 'B', 'D', 'C') ('A', 'C', 'B', 'D') ('A', 'C', 'D', 'B') ('A', 'D', 'B', 'C') ('A', 'D', 'C', 'B') ('B', 'A', 'C', 'D') ('B', 'A', 'D', 'C') ('B', 'C', 'A', 'D') ('B', 'C', 'D', 'A') ('B', 'D', 'A', 'C') ('B', 'D', 'C', 'A') ('C', 'A', 'B', 'D') ('C', 'A', 'D', 'B') ('C', 'B', 'A', 'D') ('C', 'B', 'D', 'A') ('C', 'D', 'A', 'B') ('C', 'D', 'B', 'A') ('D', 'A', 'B', 'C') ('D', 'A', 'C', 'B') ('D', 'B', 'A', 'C') ('D', 'B', 'C', 'A') ('D', 'C', 'A', 'B') ('D', 'C', 'B', ‘A’) 4! = 24

Почему именно Python? В современном обществе программировать на хотя бы базовом уровне должен уже каждому. Однако практически каждый новичок теряется при выборе языка программирования, когда сталкивается с таким разнообразием. В статье мы постарались объяснить наш выбор. Читать 5 минут

Моржовый оператор – примеры В предыдущем посте мы обсудили синтаксис нового оператора присваивания. В личные сообщения я получил большое количество просьб продолжить, поэтому в этом посте мы рассмотрим частные случаи, когда морж в коде выглядит солидно. Но для начала стоит отметить ещё один важный момент – моржовый оператор не создаёт новую область видимости: if (n:= len(a)) > 10: print(f'Слишком много элементов') print(f'Количество элементов: {n}') Теперь к практичным примерам использования. 1. Повторно используем значение в списке: foo = [y:= f(x), y * 2, y * 3] # вместо foo = [f(x), f(x) * 2, f(x) * 3] 2. Повторное использование значения из условия в генераторных выражениях: [y for x in data if (y:=f(x))] # вместо result = [] for x in data: result = f(x) if result: results.append(result) 3. Чтение данных из файла внутри циклов while: while (block := f.read(256)) != '': process(block) # вместо while True: stuff() if fail_condition: break

Моржовый оператор (Walrus Operator) в Python 3.8 Новый способ присваивания выражения (:=), или оператор «морж», был самой обсуждаемой функцией, представленной в последней версии Python. Новое дополнение к языку было предложено в PEP 572. Сразу посмотрим, как это выглядит в коде: (x:= 5) print(x) # 5 Присваивания с помощью моржа требуется делать в круглых скобках, и перед знаком равно пишется двоеточие. Внутри скобок либо создается новая переменная, либо происходит присвоение значения уже существующий переменной. Но фишка заключается в том, что вся эта конструкция, скажем так, возвращает присвоенное значение, как это делают обычные функции. a = (b:= 7) print(a, b) # 7 7 Пойдем дальше и рассмотрим пример, в котором раскрывается весь потенциал моржового оператора: # пусть a – контейнер или последовательность if (n:= len(a)) > 10: print(f'Слишком много элементов, а именно {n}') То есть мы только что прямо в проверке условия объявили новую переменную n и далее использовали ее вместо того, чтобы вычислять значение заново. Для сравнения посмотрим, как мы это могли сделать раньше: n = len(a) if n > 10: print(f'Слишком много элементов, а именно {n}') # или if len(a) > 10: print(f'Слишком много элементов, а именно {len(a)}') В первом случае появляется лишняя строка кода, в которой объявляется ненужная переменная. Во втором случае дважды вызвана одна и та же функция, а это потеря в производительности. Если вам понравился моржовый оператор, то дайте мне фидбек – я сделаю отдельный пост с конкретными примерами.

Буквально недавно вышел Python 3.8, делать обзор его новых фишек на канал?
Anonymous voting