1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-jackfrued-Python-100-Days

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Python — 100 дней от новичка до мастера

Автор: Ло Хао

Анализ областей применения Python и трудового рынка

Кратко говоря, Python — это "elegantный", "ясный" и "простой" язык программирования.

  • Низкая кривая обучения, доступна даже непрофессионалам
  • Открытый исходный код с мощной экосистемой
  • Интерпретируемый язык, обеспечивающий идеальную переносимость между платформами
  • Поддерживает объектно-ориентированное и функциональное программирование
  • Возможность расширения функциональности через вызов кода на C/C++
  • Высокий уровень стандартизации кода, что обеспечивает его читаемость

Сегодня Python широко используется во многих популярных областях:

  • Облачные инфраструктуры — Python / Java / Go
  • DevOps — Python / Shell / Ruby / Go
  • Веб-скрапинг — Python / PHP / C++
  • Анализ данных и машинное обучение — Python / R / Scala / Matlab
  • Машинное обучение — Python / R / Java / Lisp

Как Python-разработчику, основные области трудоустройства включают:

  • Разработка серверных приложений на Python / игры / API
  • Автоматизация операционной среды Python
  • Анализ данных / визуализация данных / большие данные
  • Разработка скриптов для веб-скрапинга
  • Разработка чат-ботов / алгоритмы компьютерного зрения / глубокое обучение

Ниже приведены графики, показывающие спрос на работу с Python и зарплаты в крупнейших городах (по состоянию на май 2018 года).Спрос на работу с Python и зарплаты Top 10

Рекомендации для начинающих:

  • Делайте английский вашим рабочим языком.
  • Практика делает мастера.
  • Все опыт приходит из ошибок.
  • Не будьте паразитами.
  • Либо выделяйтесь, либо вас выгонят.

День 1–15 — Основы языка Python

День 1 — Первые шаги с Python

  • Описание Python — история Python / преимущества и недостатки / области применения
  • Установка окружения для разработки — Windows / Linux / MacOS
  • Запуск Python-программ из командной строки — DOS-команды / Привет, мир / функция print / запуск программы
  • Использование IDLE — интерактивная среда (REPL) / написание многострочных кодов / запуск программы / выход из IDLE
  • Комментарии — роль комментариев / односимвольные комментарии / многострочные комментарии#### День 2 — Элементы языка — Программы и системы счисления — Инструкции и программы / Машина фон Неймана / Двоичная и десятичная системы счисления / Восьмеричная и шестнадцатеричная системы счисления
  • Переменные и типы данных — Название переменной / Использование переменной / Функция input() / Проверка типа переменной / Преобразование типов данных
  • Числа и строки — Целые числа / Числа с плавающей запятой / Комплексные числа / Строки / Основные операции со строками / Кодировка символов
  • Операторы — Математические операторы / Оператор присваивания / Сравнение значений / Логические операторы / Операторы тождественности / Приоритет операторов
  • Примеры применения — Конвертация температур из Фаренгейта в Цельсий / Ввод радиуса круга для вычисления его окружности и площади / Ввод года для проверки на високосность

День 3 — ветвящиеся конструкции#### Day04 - циклические конструкции

  • Применение циклической конструкции - условия / отступы / блоки кода / схемы процессов
  • Цикл while - базовая структура / оператор break / оператор continue
  • Цикл for - базовая структура / тип данных range / ветвящиеся конструкции внутри цикла / вложенные циклы / преждевременное завершение программы
  • Прикладные примеры - сумма чисел от 1 до 100 / проверка на простоту числа / игра "Угадай число" / вывод таблицы умножения / печать треугольников / история про монаха и груши / задача "сто денег сто птиц"

Day05 - обобщение и практика

  • Основная практика - число Нэшонал / совершенное число / разделение рыбы между пятью людьми / последовательность Фибоначчи / простое число-палиндром

  • Комбинированная практика - игра в кости Craps#### Day06 - использование функций и модулей

  • Зачем нужны функции — плохой запах кода / использование функций для упаковки функциональных модулей

  • Определение функции — ключевое слово def / имя функции / список параметров / ключевое слово return / вызов пользовательской функции

  • Вызов функции — встроенные функции Python / импорт модулей и функций

  • Параметры функции — параметры со значением по умолчанию / переменные параметры / параметры со значением ключевых слов / параметры с именованными ключевыми словами

  • Возвращаемые значения функции — отсутствие возврата / возврат одного значения / возврат нескольких значений

  • Вопросы области видимости — локальная область видимости / вложенная область видимости / глобальная область видимости / встроенная область видимости / ключевые слова связанные с областью видимости

  • Управление функциями с помощью модулей — понятие модуля / управление функциями с помощью пользовательского модуля / что происходит при конфликте названий (один и тот же модуль и разные модули)#### Day07 - строки и часто используемые структуры данных - Использование строк - вычисление длины / доступ по индексу / срезы / часто используемые методы

  • Основные способы использования списков - создание списка / доступ к элементам по индексу / выход за границы индекса / добавление элементов / удаление элементов / изменение элементов / срезы / циклический перебор

  • Часто используемые операции со списками - объединение / копирование (копия элементов и массива) / длина / сортировка / обратная сортировка / поиск

  • Создание списков - использование range для создания списков чисел / генераторное выражение / генератор

  • Использование кортежей - создание кортежей / использование значений в кортежах / изменение переменной кортежа / преобразование между кортежами и списками

  • Основные способы использования множеств - различие между множеством и списком / создание множества / добавление элементов / удаление элементов / очистка

  • Часто используемые операции со множествами - пересечение / объединение / разность / симметрическая разность / подмножество / надмножество

  • Основные способы использования словарей - особенности словарей / создание словаря / добавление элементов / удаление элементов / получение значений / очистка- Часто используемые операции со словарями - метод keys() / метод values() / метод items() / метод setdefault()

  • Базовые задачи - эффект бегущей строки / поиск максимального элемента в списке / расчет среднего балла экзаменационных оценок / последовательность Фибоначчи / треугольник Паскаля

  • Интегрированные примеры - выбор номеров лотереи "Двойной шанс" / игра "Крестики-нолики"

Day08 - Основы объектно-ориентированного программирования#### День09 - Продвинутое объектно-ориентированное программирование

  • Атрибуты - атрибуты класса / атрибуты экземпляра / геттеры / сеттеры / делетеры / использование __slots__

  • Методы в классах - методы экземпляров / методы класса / статические методы

  • Переопределение операторов - __add__ / __sub__ / __or__ / __getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__

  • Отношения между объектами классов - ассоциация / наследование / зависимость

  • Наследование и полиморфизм - что такое наследование / синтаксис наследования / вызов методов родителя / переопределение методов / проверка типа / множественное наследование / алгоритмы C3 и ромбовидное наследование

  • Интегрированные примеры - система расчета зарплат / автоматическая система скидок книг / пользовательский класс дробей#### Day10 - Графический пользовательский интерфейс и разработка игр

  • Разработка графического пользовательского интерфейса с помощью tkinter

  • Разработка приложений для игр с использованием библиотеки pygame

  • Игра "Большие шарики поглощают маленькие"

Day11 - Файлы и исключения

  • Чтение файла — чтение всего файла / чтение построчно / пути к файлам
  • Запись в файл — запись поверх существующего содержимого / добавление нового содержимого / текстовые файлы / двоичные файлы
  • Обработка исключений — важность механизма исключений / блоки try-except / блоки else / блоки finally / типы встроенных исключений / стек исключений / ключевое слово raise
  • Устойчивость данных — общие сведения о CSV-файлах / применение модуля csv / формат JSON / применение модуля json
  • Интегрированные примеры — анализ текста песен#### Day12 - Строки и регулярные выражения - Продвинутые операции со строками - Экранирующие символы \ Начальные строки \ Многострочные строки \ Операторы in и not in \ Методы с префиксом is \ Методы join и split \ Методы strip \ Модуль pyperclip \ Непостоянные и постоянные строки \ Использование модуля StringIO
  • Введение в регулярные выражения - Задачи регулярных выражений \ Метасимволы \ Экранирование \ Кванторы \ Группировка \ Нулевые границы \ Жадное и ленивое соответствие \ Использование модуля re для работы с регулярными выраженияи (соответствие, поиск, замена, захват)
  • Работа с регулярными выражениями - Модуль re \ Функция compile \ Методы group и groups \ Метод match \ Метод search \ Методы findall и finditer \ Методы sub и subn \ Метод split
  • Прикладные примеры - Использование регулярных выражений для проверки введенной строки

Day13 - Процессы и потоки#### Day14-A - Основы сетевого программирования

  • Основы компьютерных сетей - история развития компьютерных сетей / модель TCP/IP / IP-адреса / порты / протоколы / другие связанные концепции
  • Архитектура сетевых приложений - архитектура клиент-сервер / архитектура браузер-сервер
  • Сетевое программирование на Python - концепция сокетов / модуль socket / функция socket / создание TCP-сервера / создание TCP-клиента / создание UDP-сервера / создание UDP-клиента / модуль SocketServer

Day14-B - Разработка сетевых приложений

  • Доступ к сетевым API - общее представление о сетевых API / доступ к URL / модуль requests / парсинг данных в формате JSON
  • Передача файлов - протокол FTP / модуль ftplib / интерактивное приложение FTP
  • Электронная почта - протокол SMTP / протокол POP3 / протокол IMAP / модуль smtplib / модуль poplib / модуль imaplib
  • SMS-услуги - модуль twilio / SMS-услуги в Китае

Day15 - Обработка изображений и документов### Day16~Day20 - Дальнейшее изучение языка Python

  • Часто используемые структуры данных
  • Продвинутый подход к работе с функциями - "первый класс" / высшие порядки функций / lambda-функции / области видимости и замыкания / декораторы
  • Продвинутые знания объектно-ориентированного программирования - "три столпа" / отношения между классами / сборка мусора / магические свойства и методы / микси / метаклассы / принципы объектно-ориентированного проектирования / паттерны проектирования GoF
  • Итераторы и генераторы - связанные магические методы / два способа создания генераторов
  • Параллелизация и асинхронное программирование - многопоточность / многопроцессорность / асинхронное I/O / async и await

Day21~30 - Введение в front-end Web-разработку- Использование HTML-тегов для отображения содержимого страницы

  • Использование CSS для рендера страницы
  • Использование JavaScript для управления интерактивным поведением
  • Введение в jQuery и его применение
  • Введение в Vue.js
  • Использование библиотеки Element
  • Использование библиотеки Bootstrap

День3135 - Играй с Linux операционной системой### День3640 - Основы баз данных и продвинутый уровень

  • Относительные базы данных MySQL
    • Обзор относительных баз данных
    • Установка и использование MySQL
    • Использование SQL
      • DDL — язык определения данных — создание / удаление / изменение
      • DML — язык управления данными — вставка / удаление / обновление / выбор
      • DCL — язык контроля доступа — предоставление / отзыв
    • Связанные знания
      • Теория нормализации — руководящие идеи для проектирования двухмерных таблиц
      • Интегрированность данных
      • Консистентность данных
    • Работа с MySQL в Python
  • Начало работы с NoSQL
    • Обзор NoSQL
    • Обзор Redis
    • Обзор MongoDB

День41~55 - Практическое применение Django

День41 - Быстрый старт

  • Принцип работы веб-приложений и протокол HTTP
  • Обзор фреймворка Django
  • Быстрый старт за cq минут
  • Использование представлений и шаблонов

День42 - Глубокое понимание моделей#### День48 - Загрузка файлов и редактирование富文本编辑

День49 - Скачивание файлов и отчеты

День50 - Архитектура RESTful и начало работы с DRF

День51 - Архитектура RESTful и продвинутый уровень DRF

День52 - Использование кэша

День53 - SMS и электронная почта

День48 - Загрузка файлов и редактирование 富文本编辑#### День54 - Асинхронные задачи и планировщики задач#### День55 - Юнит-тестирование и запуск проекта### Дни56-60 - Практическая работа с Flask

День56 - Начало работы с Flask

День57 - Использование шаблонов

День58 - Обработка форм

День59 - Операции с базой данных

День60 - Практическая работа над проектом

Дни61-65 - Практическая работа с Tornado

День61 - Основные знания

  • Параллельное программирование
  • Модели I/O и событийного драйвера

День62 - Начало работы с Tornado

  • Обзор Tornado
  • Быстрый старт с использованием Tornado за Yöntem 5 минут
  • Распределение маршрутов
  • Обработчики запросов

День63 - Асинхронизация

  • Использование aiomysql и aioredis

День64 - Применение WebSocket

  • Введение в WebSocket

  • Программирование серверной части WebSocket

  • Программирование клиентской части WebSocket

  • Проект: Веб-чат#### День 65 - Практическая работа над проектом

  • Разделение на фронтенд и бэкенд при разработке проекта и создание документации API

  • Реализация фронтального отображения с помощью Vue.js

  • Реализация отчётной функциональности с помощью ECharts

  • Реализация сервиса push с использованием WebSocket

Дни 66-75 - Разработка пауков

День 66 - Веб-пауки и связанные инструменты

День 67 - Сбор и анализ данных

День 68 - Хранение данных

День 69 - Параллельная загрузка

День 70 - Анализ динамического контента

День 71 - Интерактивные формы и обработка CAPTCHA

День 72 - Начало работы со Scrapy

День 73 - Продвинутое использование Scrapy

День 74 - Распределённая реализация Scrapy

День 75 - Практическая работа над проектом пауков

Дни 76-90 - Обработка данных и машинное обучение

День 76 - Основы машинного обучения#### День77 - Применение Pandas#### День78 - [Применение NumPy и SciPy](./Day76-90/03.NumPy и SciPy применения)

День79 - [Matplotlib и визуализация данных](./Day76-90/04.Matplotlib и данные визуализации)

День80 - [К ближайшему соседу (KNN) классификация](./Day76-90/05.K-ближайший сосед классификация.md)

День81 - [Деревья решений](./Day76-90/06.деревья решения.md)

День82 - [Байесовская классификация](./Day76-90/07.Байесовская классификация.md)

День83 - [Поддержка векторной машины (SVM)](./Day76-90/08.поддержка векторная машина.md)

День84 - [K-средние кластеры](./Day76-90/09.K-средние кластеры.md)

День85 - [Анализ регрессии](./Day76-90/10.регрессия анализ.md)

День86 - [Основы анализа больших данных](./Day76-90/11.основы анализа больших данных.md)

День87 - [Повышение уровня анализа больших данных](./Day76-90/12.повышение уровня анализа больших данных.md)

День88 - [Основы TensorFlow](./Day76-90/13.TensorFlow основы.md)

День89 - [Практическое применение TensorFlow](./Day76-90/14.TensorFlow практика.md)

День90 - [Рекомендательные системы](./Day76-90/15.рекомендательные системы.md)

День91~100 - Разработка командного проекта

День91: Создание команды и выбор проекта1. Модели процесса программирования

  • Классическая модель процесса (модель водопада)

    • Анализ возможности (выявление целесообразности начала проекта), выход — «Отчет о анализе возможностей».
    • Анализ требований (определение конкретных задач), выход — «Спецификация требований» и прототип продукта.
    • Общее проектирование и детальное проектирование, выход — концептуальная модель, физическая модель, диаграмма классов, последовательность событий и т.д.
    • Программирование / тестирование.
    • Ввод в эксплуатацию / обслуживание.
  • Агилное развитие (Scrum) - владелец продукта, Scrum мастер, разработчики - спринты

    • Бэклог продукта (истории пользователя, прототип продукта).
    • Плановое совещание (оценка и бюджет).
    • Ежедневное развитие (стандартное совещание, методика Pomodoro, парное программирование, тестирование перед программированием, рефакторинг кода...).
    • Устранение ошибок (описание проблемы, шаги воспроизведения, тестировщики, назначенные исполнители).
    • Совещание по проверке (показывание работы).
    • Совещание по обратной связи (что хорошо и плохо было сделано в текущем цикле). > Дополнительно: Декларация агилного программирования
    • Личности и взаимодействие важнее процесса и инструментов
    • Работающее программное обеспечение важнее подробной документации
    • Сотрудничество с клиентами важнее переговоров
    • Ответ на изменения важнее соблюдения плана Рисунок ежедневного совещания в цикле спринтов

    Роли: продукт-OWNER (определяет, что делать и принимает решения относительно требований), лидер команды (решает различные проблемы, сосредоточен на том, как лучше работать, защищает команду от внешних воздействий), команда разработчиков (исполнитель проекта, конкретно — программисты и тестировщики).

    Подготовка: бизнес-кейсы и финансы, контракты, мечты, первоначальные требования к продукту, начальный план выпуска, инвестиции, создание команды.

    Обычно в агилной команде насчитывается 8–10 человек.

    Оценка объема работы: количественная оценка задач разработки, включая прототипирование, дизайн логотипа, UI-дизайн, фронтенд-разработку и т. д., с целью разделения каждого задания на минимальные подзадачи. Минимальная подзадача должна занимать не более двух рабочих дней. После этого оценивается общее время выполнения проекта. Каждое задание прикрепляется к доске, которая разделена на три части: to do (не выполненное), in progress (выполняется) и done (выполнено).

Сборка команды проекта- Состав и роли команды

Примечание: Благодарю госпожу Фу Шяньин за создание следующей красивой организационной схемы компании.

company_architecture

  • Программистские нормы и проверка кода (flake8, pylint)

  • Некоторые "обычаи" в Python (см. Обычаи Python — как писать "питонический" код)

  • Причины, влияющие на читаемость кода:

    • Недостаточное количество комментариев или отсутствие комментариев
    • Код, нарушающий лучшие практики языка
    • Антипаттерны программирования (тестовая лапша, копирование-вставка, самолюбование, ...)

Введение в инструменты для командного развития

  • Контроль версий: Git, Mercurial
  • Управление дефектами: GitLab, Redmine
  • Инструменты Agile: Zentao, JIRA
  • Непрерывная интеграция: Jenkins, Travis CI

Для более подробной информации см. Инструменты для командного развития проекта.

Выбор темы проекта и понимание бизнеса

  1. Определение области выбора темы

    • CMS (клиентская сторона): Новостные агрегаторы, сайты вопросов и ответов, сайты отзывов на фильмы и книги.

    • MIS (клиентская + административная стороны): KMS, системы оценки KPI, HRS, CRM, системы управления цепочками поставок, системы управления складом. - Back-end приложений (административная сторона + API): Приложения для вторичной торговли, журналы и газеты, малый бизнес электронной коммерции, новостные порталы, туризм, социальные сети, чтение.

    • Другие типы: Отраслевое и опытное знание, легко понимаемые и контролируемые бизнес-процессы.

  2. Понимание требований, разделение на модули и распределение задач

    • Понимание требований: мозговой штурм и анализ конкурентов.
    • Разделение на модули: создание карт мышления (XMind), каждый модуль является ветвлением, каждая конкретная функция является листовым узлом (выражается глаголами), необходимо убедиться, что каждый листовой узел не может порождать новые узлы, определить важность, приоритет и объём работы каждого листового узла.
    • Распределение задач: руководитель проекта распределяет задачи каждому участнику команды на основе вышеупомянутых критериев.

    3. Создание плана выполнения проекта (ежедневное обновление)| Модуль | Функционал | Человек | Статус | Выполнено | Часы работы | Плановая дата начала | Реальная дата начала | Плановая дата окончания | Реальная дата окончания | Примечание | |--------|------------|---------|--------|-----------|-------------|----------------------|-----------------------|--------------------------|--------------------------|--------------| | Комментарий | Добавление комментария | Ван Дацай | В процессе | 50% | 4 | 07.08.2018 | | 07.08.2018 | | | | | Удаление комментария | Ван Дацай | Ожидание | 0% | 2 | 07.08.2018 | | 07.08.2018 | | | | | Просмотр комментария | Бай Юаньфана | В процессе | 20% | 4 | 07.08.2018 | | 07.08.2018 | | Необходима проверка кода | | | Голосование за комментарий | Бай Юаньфана | Ожидание | 0% | 4 | 08.08.2018 | | 08.08.2018 | | |

День 92: Проектирование баз данных и OOAD#### Концептуальная модель и прямое проектирование

  1. Диаграмма классов в UML (Unified Modeling Language)

    uml

  2. Создание таблиц на основе модели (прямое проектирование)

    python manage.py makemigrations app
    python manage.py migrate

Физическая модель и обратное проектирование

  1. PowerDesigner

  2. Создание модели на основе таблиц данных (обратное проектирование)

    python manage.py inspectdb > app/models.py

Дни 93–98: Разработка проекта с использованием Django

Примечание: Подробнее см. «Конспект знаний Django».

Общие проблемы при разработке проекта

  1. Настройка баз данных (несколько баз данных, мастер-слейв репликация, маршрутизация баз данных)
  2. Настройка кэширования (разделение кэша, установка ключей, настройка времени жизни, мастер-слейв репликация, восстановление после отказа (sentinel))
  3. Настройка журнала
  4. Анализ и отладка (Django-Debug-Toolbar)
  5. Полезные модули Python (вычисление дат, обработка изображений, шифрование данных, использование сторонних API)

Проектирование REST API1. Архитектура RESTful

  1. Написание документации для API (см. «Проектирование сетевых API»).

  2. Применение django-REST-framework#### Анализ сложностей проекта

  3. Использование кэширования для снижения нагрузки на базу данных — Redis

  4. Использование очередей сообщений для декомпозиции и ограничения пиков — Celery + RabbitMQ

Дни 99–100: Тестирование и развертывание

Единичные тесты

  1. Виды тестов
  2. Написание единичных тестов (unittest, pytest, nose2, tox, ddt, ...)
  3. Охват тестами (coverage)

Развертывание проекта

Примечание: Подробнее см. «Руководство по развертыванию проекта».

  1. Подготовка к развёртыванию
    • Ключевые настройки (SECRET_KEY / DEBUG / ALLOWED_HOSTS / кэш / база данных)
    • HTTPS / CSRF_COOKIE_SECURE / SESSION_COOKIE_SECURE
    • Настройки логирования
  2. Обзор часто используемых команд в Linux
  3. Установка и конфигурация основных служб в Linux
  4. Использование uWSGI/Gunicorn и Nginx
    • Сравнение Gunicorn и uWSGI
      • Для простых приложений, не требующих значительной кастомизации, Gunicorn является хорошим выбором; кривая обучения для uWSGI намного круче, чем для Gunicorn. По умолчанию параметры Gunicorn уже подходят большинству приложений.
      • uWSGI поддерживает гетерогенную установку.
      • Поскольку сам Nginx поддерживает uWSGI, обычно его используют вместе с uWSGI для развёртывания в продакшене. Кроме того, uWSGI представляет собой полнофункциональное и высоко кастомизируемое WSGI средство.
      • В плане производительности Gunicorn и uWSGI примерно равны.
  5. Технология виртуализации (Docker)
Проверка производительности> Примечание: подробная информация доступна в «Обзор ключевых понятий Django».
  1. Использование Apache Bench (AB)
  2. Использование SQLSlap
  3. Использование SysBench
Автоматизация тестирования
  1. Автоматизация тестирования с использованием Shell и Python
  2. Автоматизация тестирования с помощью Selenium
    • Selenium IDE
    • Selenium WebDriver
    • Selenium Remote Control
  3. Введение в тестовый фреймворк Robot Framework
Оптимизация производительности проекта
  1. Оптимизация производительности баз данных — см. «Основные знания о MySQL»

    • Улучшение аппаратного и программного обеспечения

    • Оптимизация SQL запросов

    • Архитектурная оптимизация

      • Разделение таблиц и баз данных

      • Активация главного сервера и разделение чтения и записи

      • Кластерная архитектура

  2. Оптимизация производительности веб-сервера

    • Настройка балансировки нагрузки Nginx

    • Реализация высокой доступности с помощью Keepalived

  3. Оптимизация производительности кода

    • Использование многопоточности
    • Преобразование в асинхронный режим
  4. Оптимизация доступа к статическим ресурсам

    • Облачное хранение
    • CDN

Благодарность: благодарю моих коллег Гуйя, Чжаньцзюнь, Сяоширонг, Ванхаифэй, Юнджиявей, Люфэнконг за предоставленные ими технические советы и помощь.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Python — 100 дней от новичка до мастера. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-jackfrued-Python-100-Days.git
git@api.gitlife.ru:oschina-mirror/mirrors-jackfrued-Python-100-Days.git
oschina-mirror
mirrors-jackfrued-Python-100-Days
mirrors-jackfrued-Python-100-Days
master