diff --git a/README.es-ES.md b/README.es-ES.md index 0d6e5771..c2c8c1e2 100644 --- a/README.es-ES.md +++ b/README.es-ES.md @@ -5,7 +5,7 @@ > Esta es una colección de scripts de Python divididos en [categorías](#contenido) que contienen ejemplos de código con sus explicaciones, diferentes usos y links a recursos adicionales. -> _Lee esto en:_ [_Inglés_](README.md), [_Portugués_](README.pt-BR.md), _Traditional Chinese_](README.zh-TW.md). +> _Lee esto en:_ [_Inglés_](README.md), [_Portugués_](README.pt-BR.md), [_Traditional Chinese_](README.zh-TW.md), [_Українська_](README.uk-UA.md). Es un **playground** ya que puedes cambiar o añadir cosas al código para ver cómo funciona y [probarlo](#probando-el-código) usando aserciones. También puedes diff --git a/README.md b/README.md index f53cdf8f..fd21f154 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ > This is a collection of Python scripts that are split by [topics](#table-of-contents) and contain code examples with explanations, different use cases and links to further readings. -> _Read this in:_ [_Português_](README.pt-BR.md), [_Español_](README.es-ES.md), [_Traditional Chinese_](README.zh-TW.md). +> _Read this in:_ [_Português_](README.pt-BR.md), [_Español_](README.es-ES.md), [_Traditional Chinese_](README.zh-TW.md), [_Українська_](README.uk-UA.md). It is a **playground** because you may change or add the code to see how it works and [test it out](#testing-the-code) using assertions. It also allows you diff --git a/README.pt-BR.md b/README.pt-BR.md index 4839e9ab..9bc82348 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -5,7 +5,7 @@ > Essa é uma coleção de scripts Python dividida em [tópicos](#índice) que contém exemplos de código com explicações, diferentes usos e links para outras leituras. -> _Ler em:_ [_English_](README.md), [_Español_](README.es-ES.md), [_Traditional Chinese_](README.zh-TW.md). +> _Ler em:_ [_English_](README.md), [_Español_](README.es-ES.md), [_Traditional Chinese_](README.zh-TW.md), [_Українська_](README.uk-UA.md). É um **playground** porque você pode fazer alterações no código para ver como ele se comporta, além de [testá-lo](#testando-o-código) usando asserções. Também é possível diff --git a/README.uk-UA.md b/README.uk-UA.md new file mode 100644 index 00000000..aad829fc --- /dev/null +++ b/README.uk-UA.md @@ -0,0 +1,213 @@ +# Пісочниця та шпаргалка для вивчення Python + +> 🇺🇦 УКРАЇНА [ЗАЗНАЄ ЗБРОЙНОЇ АГРЕСІЇ](https://war.ukraine.ua/) З БОКУ РОСІЙСЬКОЇ АРМІЇ. ГИНУТЬ МИРНІ ЖИТЕЛІ. ЖИТЛОВІ КВАРТАЛИ ЗАЗНАЮТЬ БОМБАРДУВАНЬ. +> - Допоможіть Україні: +> - [Благодійний фонд Сергія Притули](https://prytulafoundation.org/en/) +> - [Благодійний фонд «Повернись живим»](https://savelife.in.ua/donate/) +> - [Національний банк України](https://bank.gov.ua/ua/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) +> - Більше інформації на [war.ukraine.ua](https://war.ukraine.ua/) та [МЗС України](https://twitter.com/MFA_Ukraine) + +
+ +[![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python) + +> Це колекція скриптів мовою Python, розподілених за [темами](#зміст), що містять приклади коду з поясненнями, різними варіантами використання та посиланнями на додаткові матеріали. + +> _Читати іншими мовами:_ [_English_](README.md), [_Português_](README.pt-BR.md), [_Español_](README.es-ES.md), [_繁體中文_](README.zh-TW.md). + +Це **пісочниця**, тому що ви можете змінювати або доповнювати код, щоб побачити, як він працює, і [тестувати його](#тестування-коду) за допомогою тверджень. Також ви можете [перевіряти код](#перевірка-коду), який ви написали, і з'ясувати, чи відповідає він настановам зі стилю Python. Усе це може зробити процес навчання інтерактивнішим і допоможе підтримувати високу якість коду від самого початку. + +Це **шпаргалка**, тому що ви можете повертатися до цих прикладів коду щоразу, коли захочете повторити синтаксис [стандартних інструкцій і конструкцій Python](#зміст). А оскільки код містить багато тверджень, ви зможете бачити очікуваний результат функцій та виразів одразу, без їх запуску. + +> _Вас також може зацікавити 🤖 [Interactive Machine Learning Experiments](https://github.com/trekhleb/machine-learning-experiments)_ + +## Як користуватися цим репозиторієм + +Кожен скрипт Python у цьому репозиторії має таку структуру: + +```python +"""Lists <--- Назва теми + +# @see: https://www.learnpython.org/en/Lists <-- Посилання на додаткові матеріали + +Тут може бути детальніше пояснення поточної теми (наприклад, загальна інформація про списки). +""" + + +def test_list_type(): + """Пояснення підтеми. + + Кожен файл містить тестові функції, які ілюструють підтеми (наприклад, тип списку, методи списків). + """ + + # Ось приклад побудови списку. <-- Коментарі пояснюють дію + squares = [1, 4, 9, 16, 25] + + # Списки можна індексувати та зрізати (sliced). + # Індексування повертає елемент. + assert squares[0] == 1 # <-- Твердження ілюструють результат. + # Зрізання повертає новий список. + assert squares[-3:] == [9, 16, 25] # <-- Твердження ілюструють результат. +``` + +Зазвичай ви можете зробити наступне: + +- [Знайти тему](#зміст), яку хочете вивчити або повторити. +- Прочитати коментарі та/або документацію, на яку є посилання в docstring кожного скрипта (як у прикладі вище). +- Переглянути приклади коду та твердження, щоб побачити варіанти використання й очікуваний результат. +- Змінити код або додати нові твердження, щоб побачити, як усе працює. +- [Запустити тести](#тестування-коду) та [перевірити код](#перевірка-коду), щоб переконатися, що він працює і написаний правильно. + +## Зміст + +1. **Початок роботи** + - [Що таке Python](src/getting_started/what_is_python.uk-UA.md) + - [Синтаксис Python](src/getting_started/python_syntax.uk-UA.md) + - [Змінні](src/getting_started/test_variables.py) +2. **Оператори** + - [Арифметичні оператори](src/operators/test_arithmetic.py) (`+`, `-`, `*`, `/`, `//`, `%`, `**`) + - [Побітові оператори](src/operators/test_bitwise.py) (`&`, `|`, `^`, `>>`, `<<`, `~`) + - [Оператори присвоєння](src/operators/test_assigment.py) (`=`, `+=`, `-=`, `/=`, `//=` тощо) + - [Оператори порівняння](src/operators/test_comparison.py) (`==`, `!=`, `>`, `<`, `>=`, `<=`) + - [Логічні оператори](src/operators/test_logical.py) (`and`, `or`, `not`) + - [Оператори ідентичності](src/operators/test_identity.py) (`is`, `is not`) + - [Оператори належності](src/operators/test_membership.py) (`in`, `not in`) +3. **Типи даних** + - [Числа](src/data_types/test_numbers.py) (включно з булевими значеннями) + - [Рядки](src/data_types/test_strings.py) та їхні методи + - [Списки](src/data_types/test_lists.py) та їхні методи (включно з генераторами списків) + - [Кортежі](src/data_types/test_tuples.py) + - [Множини](src/data_types/test_sets.py) та їхні методи + - [Словники](src/data_types/test_dictionaries.py) + - [Перетворення типів](src/data_types/test_type_casting.py) +4. **Керування потоком виконання** + - [Інструкція `if`](src/control_flow/test_if.py) + - [Інструкція `for`](src/control_flow/test_for.py) (і функція `range()`) + - [Інструкція `while`](src/control_flow/test_while.py) + - [Інструкція `try`](src/control_flow/test_try.py) + - [Інструкція `break`](src/control_flow/test_break.py) + - [Інструкція `continue`](src/control_flow/test_continue.py) +5. **Функції** + - [Визначення функції](src/functions/test_function_definition.py) (інструкції `def` і `return`) + - [Області видимості змінних у функціях](src/functions/test_function_scopes.py) (інструкції `global` і `nonlocal`) + - [Стандартні значення аргументів](src/functions/test_function_default_arguments.py) + - [Іменовані аргументи](src/functions/test_function_keyword_arguments.py) + - [Довільні списки аргументів](src/functions/test_function_arbitrary_arguments.py) + - [Розпакування списків аргументів](src/functions/test_function_unpacking_arguments.py) (інструкції `*` і `**`) + - [Лямбда-вирази](src/functions/test_lambda_expressions.py) (інструкція `lambda`) + - [Рядки документації](src/functions/test_function_documentation_string.py) + - [Анотації функцій](src/functions/test_function_annotations.py) + - [Декоратори функцій](src/functions/test_function_decorators.py) +6. **Класи** + - [Визначення класу](src/classes/test_class_definition.py) (інструкція `class`) + - [Об'єкти класу](src/classes/test_class_objects.py) + - [Об'єкти екземплярів](src/classes/test_instance_objects.py) + - [Об'єкти методів](src/classes/test_method_objects.py) + - [Змінні класу та екземпляра](src/classes/test_class_and_instance_variables.py) + - [Успадкування](src/classes/test_inheritance.py) + - [Множинне успадкування](src/classes/test_multiple_inheritance.py) +7. **Модулі** + - [Модулі](src/modules/test_modules.py) (інструкція `import`) + - [Пакети](src/modules/test_packages.py) +8. **Помилки та винятки** + - [Обробка винятків](src/exceptions/test_handle_exceptions.py) (інструкція `try`) + - [Генерування винятків](src/exceptions/test_raise_exceptions.py) (інструкція `raise`) +9. **Файли** + - [Читання та записування](src/files/test_file_reading.py) (інструкція `with`) + - [Методи файлових об'єктів](src/files/test_file_methods.py) +10. **Додатково** + - [Інструкція `pass`](src/additions/test_pass.py) + - [Генератори](src/additions/test_generators.py) (інструкція `yield`) +11. **Короткий огляд стандартних бібліотек** + - [Серіалізація](src/standard_libraries/test_json.py) (бібліотека `json`) + - [Шаблони пошуку файлів](src/standard_libraries/test_glob.py) (бібліотека `glob`) + - [Пошук за шаблоном у рядках](src/standard_libraries/test_re.py) (бібліотека `re`) + - [Математика](src/standard_libraries/test_math.py) (бібліотеки `math`, `random`, `statistics`) + - [Дата і час](src/standard_libraries/test_datetime.py) (бібліотека `datetime`) + - [Стиснення даних](src/standard_libraries/test_zlib.py) (бібліотека `zlib`) +12. **Введення користувача** + - [Введення з терміналу](src/user_input/test_input.py) (інструкція `input`) + +## Передумови + +**Встановлення Python** + +Переконайтеся, що на вашому комп'ютері [встановлено Python 3](https://realpython.com/installing-python/). + +Ви можете використовувати стандартну бібліотеку Python [venv](https://docs.python.org/3/library/venv.html) для створення віртуальних середовищ, щоб Python, pip та всі залежні пакети встановлювалися й працювали з локальної теки проєкту, а не впливали на системні пакети та їхні версії. + +Залежно від вашої інсталяції, доступ до інтерпретатора Python 3 можна отримати, виконавши команду `python` або `python3`. Те саме стосується менеджера пакетів pip — він може бути доступний через `pip` або `pip3`. + +Перевірити версію Python можна, виконавши: + +```bash +python --version +``` + +Зверніть увагу, що в цьому репозиторії, коли ви бачите `python`, мається на увазі Python **3**. + +**Встановлення залежностей** + +Встановіть усі необхідні залежності проєкту, виконавши: + +```bash +pip install -r requirements.txt +``` + +## Тестування коду + +Тести написані з використанням фреймворку [pytest](https://docs.pytest.org/en/latest/). + +Ви можете додавати власні тести, створюючи файли та функції з префіксом `test_` (наприклад, `test_topic.py` з функцією `def test_sub_topic()` всередині). + +Щоб запустити всі тести, виконайте з кореневої теки проєкту: + +```bash +pytest +``` + +Щоб запустити окремі тести, виконайте: + +```bash +pytest ./path/to/the/test_file.py +``` + +## Перевірка коду + +Перевірка коду виконується за допомогою бібліотек [pylint](http://pylint.pycqa.org/) та [flake8](http://flake8.pycqa.org/en/latest/). + +### PyLint + +Щоб перевірити, чи написаний код відповідно до настанов зі стилю [PEP 8](https://www.python.org/dev/peps/pep-0008/), виконайте: + +```bash +pylint ./src/ +``` + +Якщо лінтер виявить помилку (наприклад, `missing-docstring`), ви можете дізнатися про неї більше, виконавши: + +```bash +pylint --help-msg=missing-docstring +``` + +[Детальніше про PyLint](http://pylint.pycqa.org/) + +### Flake8 + +Щоб перевірити, чи написаний код відповідно до настанов зі стилю [PEP 8](https://www.python.org/dev/peps/pep-0008/), виконайте: + +```bash +flake8 ./src +``` + +Або, якщо ви хочете отримати детальніший вивід: + +```bash +flake8 ./src --statistics --show-source --count +``` + +[Детальніше про Flake8](http://flake8.pycqa.org/en/latest/) + +## Автор + +- [@trekhleb](https://trekhleb.dev) diff --git a/README.zh-TW.md b/README.zh-TW.md index 689c1ec8..a0caedb5 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -4,7 +4,7 @@ > 此專案依據 [目錄](#目錄) 分類收集了 Python 腳本,包含了程式碼範例及解釋、不同的使用情境以及衍伸閱讀連結。 -> _閱讀英文原始版本:_ [_English_](README.md), [_Português_](README.pt-BR.md), [_Español_](README.es-ES.md). +> _閱讀英文原始版本:_ [_English_](README.md), [_Português_](README.pt-BR.md), [_Español_](README.es-ES.md), [_Українська_](README.uk-UA.md). 此專案名稱之所以叫做 **練習場(Playground)**,是因為您可以修改或是新增程式碼至範例中去觀察程式執行流程並使用斷言關鍵字(assert)來 [測試程式](#測試程式)。同時,此專案也使用了業界常用的工具來 [檢查程式碼](#檢查程式碼),確保您所撰寫的程式碼符合官方建議的 Python 程式碼風格規範。 diff --git a/src/getting_started/python_syntax.uk-UA.md b/src/getting_started/python_syntax.uk-UA.md new file mode 100644 index 00000000..5215a65c --- /dev/null +++ b/src/getting_started/python_syntax.uk-UA.md @@ -0,0 +1,49 @@ +# Синтаксис Python + +**Синтаксис Python порівняно з іншими мовами програмування** + +- Python було розроблено з акцентом на зручність читання коду; він має певну подібність до англійської мови з впливом математики. +- Python використовує нові рядки для завершення команди, на відміну від інших мов програмування, які часто використовують крапку з комою або дужки. +- Python покладається на відступи за допомогою пробілів для визначення області видимості — наприклад, області видимості циклів, функцій і класів. Інші мови програмування зазвичай використовують для цього фігурні дужки. + +## Відступи в Python + +Якщо в інших мовах програмування відступи в коді потрібні лише для зручності читання, то в Python відступи мають дуже важливе значення. + +Python використовує відступи для позначення блоку коду. + +```python +if 5 > 2: + print("Five is greater than two!") +``` + +Python видасть помилку, якщо ви пропустите відступ. + +## Коментарі + +Python має можливість коментування для документування коду. + +Коментарі починаються з `#`, і Python обробляє решту рядка як коментар: + +```python +#This is a comment. +print("Hello, World!") +``` + +## Рядки документації (Docstrings) + +Python також має розширені можливості документування, які називаються рядками документації (docstrings). + +Рядки документації можуть бути однорядковими або багаторядковими. Рядки документації також є коментарями. + +Python використовує потрійні лапки на початку та в кінці рядка документації: + +```python +"""This is a +multiline docstring.""" +print("Hello, World!") +``` + +## Посилання + +- [w3schools.com](https://www.w3schools.com/python/python_syntax.asp) diff --git a/src/getting_started/what_is_python.uk-UA.md b/src/getting_started/what_is_python.uk-UA.md new file mode 100644 index 00000000..de2e66cb --- /dev/null +++ b/src/getting_started/what_is_python.uk-UA.md @@ -0,0 +1,37 @@ +# Що таке Python + +Python — популярна мова програмування. Її створив Ґвідо ван Россум у 1991 році. + +Python — це потужна мова програмування, яку легко вивчити. Вона має ефективні високорівневі структури даних і простий, але дієвий підхід до об'єктно-орієнтованого програмування. Елегантний синтаксис Python і динамічна типізація, разом з інтерпретованою природою мови, роблять її ідеальною для написання скриптів і швидкої розробки застосунків у багатьох галузях на більшості платформ. + +Python використовується для: + +- веброзробки (серверна частина), +- розробки програмного забезпечення, +- математичних обчислень, +- системних скриптів. + +## Що може Python? + +- Python можна використовувати на сервері для створення вебзастосунків. +- Python можна використовувати разом з іншим програмним забезпеченням для створення робочих процесів. +- Python може підключатися до систем баз даних, а також читати та змінювати файли. +- Python можна використовувати для обробки великих обсягів даних і виконання складних математичних обчислень. +- Python можна використовувати як для швидкого прототипування, так і для розробки готового до продакшену програмного забезпечення. + +## Чому Python? + +- Python працює на різних платформах (Windows, Mac, Linux, Raspberry Pi тощо). +- Python має простий синтаксис, подібний до англійської мови. +- Синтаксис Python дає змогу розробникам писати програми з меншою кількістю рядків коду, ніж у деяких інших мовах програмування. +- Python працює на системі інтерпретатора, тобто код може бути виконаний одразу після написання. Це означає, що прототипування може бути дуже швидким. +- Python можна використовувати в процедурному, об'єктно-орієнтованому або функціональному стилі. + +## Корисно знати + +- Найновіша основна версія Python — це Python 3, яку ми будемо використовувати в цьому посібнику. Однак Python 2, хоча й не оновлюється нічим, крім оновлень безпеки, все ще досить популярний. +- У цьому посібнику код Python пишеться в текстовому редакторі. Також можна писати код Python в інтегрованому середовищі розробки (IDE), наприклад Thonny, PyCharm, NetBeans або Eclipse, що особливо зручно при роботі з великими колекціями файлів Python. + +## Посилання + +- [w3schools.com](https://www.w3schools.com/python/python_intro.asp)