From 3f1801185ff2c40354bc2ed4220319e11ba8c922 Mon Sep 17 00:00:00 2001 From: Henrique Tsuyoshi Yara Date: Sun, 23 Jan 2022 17:59:29 -0300 Subject: [PATCH 01/13] Change some typos, words and improve reading (#56) * style(test_generators.py): change i for _ in loop * style(test_multiple_inheritance.py): better identation * style(test_function_arbitraty_arguments.py): fix typo * style(test_class_and_instance_variables.py): fix comment * style(test_class_and_instance_variables.py): fix typo Co-authored-by: Oleksii Trekhleb --- src/additions/test_generators.py | 2 +- src/classes/test_class_and_instance_variables.py | 2 +- src/classes/test_multiple_inheritance.py | 4 ++-- src/functions/test_function_arbitrary_arguments.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/additions/test_generators.py b/src/additions/test_generators.py index ff3bce26..6b2f2736 100644 --- a/src/additions/test_generators.py +++ b/src/additions/test_generators.py @@ -23,7 +23,7 @@ def lottery(): """ # returns first 3 random numbers between 1 and 10 # pylint: disable=unused-variable - for i in range(3): + for _ in range(3): yield random.randint(1, 10) # returns a 4th number between 10 and 20 diff --git a/src/classes/test_class_and_instance_variables.py b/src/classes/test_class_and_instance_variables.py index c4004d79..d33ff2e6 100644 --- a/src/classes/test_class_and_instance_variables.py +++ b/src/classes/test_class_and_instance_variables.py @@ -72,7 +72,7 @@ def __init__(self, name): def add_trick(self, trick): """Add trick to the dog - This function illustrate mistaken use of mutable class variable tricks (see below). + This function illustrate a correct use of mutable class variable tricks (see below). """ self.tricks.append(trick) diff --git a/src/classes/test_multiple_inheritance.py b/src/classes/test_multiple_inheritance.py index 2ad73f8d..e3d41529 100644 --- a/src/classes/test_multiple_inheritance.py +++ b/src/classes/test_multiple_inheritance.py @@ -41,8 +41,8 @@ def get_date(self): class CalendarClock(Clock, Calendar): """Class that uses multiple inheritance. - For most purposes, in the simplest cases, you can think of the search for attributes i - nherited from a parent class as depth-first, left-to-right, not searching twice in the same + For most purposes, in the simplest cases, you can think of the search for attributes + inherited from a parent class as depth-first, left-to-right, not searching twice in the same class where there is an overlap in the hierarchy. Thus, if an attribute is not found in CalendarClock, it is searched for in Clock, then (recursively) in the base classes of Clock, and if it was not found there, it was searched for in Calendar, and so on. diff --git a/src/functions/test_function_arbitrary_arguments.py b/src/functions/test_function_arbitrary_arguments.py index b3f36627..6853a178 100644 --- a/src/functions/test_function_arbitrary_arguments.py +++ b/src/functions/test_function_arbitrary_arguments.py @@ -16,7 +16,7 @@ def test_function_arbitrary_arguments(): # containing the positional arguments beyond the formal parameter list. # (*name must occur before **name.) For example, if we define a function like this: def test_function(first_param, *arguments): - """This function accepts its arguments through "arguments" tuple amd keywords dictionary.""" + """This function accepts its arguments through "arguments" tuple and keywords dictionary.""" assert first_param == 'first param' assert arguments == ('second param', 'third param') From 6ff6be8e0d825c1dc06056df92f25a6903ce2dd8 Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Mon, 24 Jan 2022 05:01:18 +0800 Subject: [PATCH 02/13] fix typo "amd" -> "and" (#61) Co-authored-by: Oleksii Trekhleb --- src/functions/test_function_keyword_arguments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/functions/test_function_keyword_arguments.py b/src/functions/test_function_keyword_arguments.py index 65d066c1..7b6ff1c3 100644 --- a/src/functions/test_function_keyword_arguments.py +++ b/src/functions/test_function_keyword_arguments.py @@ -102,7 +102,7 @@ def function_with_one_argument(number): # containing the positional arguments beyond the formal parameter list. # (*name must occur before **name.) For example, if we define a function like this: def test_function(first_param, *arguments, **keywords): - """This function accepts its arguments through "arguments" tuple amd keywords dictionary.""" + """This function accepts its arguments through "arguments" tuple and keywords dictionary.""" assert first_param == 'first param' assert arguments == ('second param', 'third param') assert keywords == { From 5e936a75c3ba15ddc4db055f161a814b6d77dcd7 Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Mon, 24 Jan 2022 05:02:08 +0800 Subject: [PATCH 03/13] no **keywords dictionary parameters (#62) Co-authored-by: Oleksii Trekhleb --- src/functions/test_function_arbitrary_arguments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/functions/test_function_arbitrary_arguments.py b/src/functions/test_function_arbitrary_arguments.py index 6853a178..2b00d176 100644 --- a/src/functions/test_function_arbitrary_arguments.py +++ b/src/functions/test_function_arbitrary_arguments.py @@ -16,7 +16,7 @@ def test_function_arbitrary_arguments(): # containing the positional arguments beyond the formal parameter list. # (*name must occur before **name.) For example, if we define a function like this: def test_function(first_param, *arguments): - """This function accepts its arguments through "arguments" tuple and keywords dictionary.""" + """This function accepts its arguments through "arguments" tuple""" assert first_param == 'first param' assert arguments == ('second param', 'third param') From 212ca88fa170a0b89f625b4f40c9734a93d43cc0 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Sat, 12 Mar 2022 17:44:14 +0100 Subject: [PATCH 04/13] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index af3242d5..edb4d6dd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # Playground and Cheatsheet for Learning Python +> 🇺🇦 UKRAINE [IS BEING ATTACKED](https://twitter.com/MFA_Ukraine) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. +> - Help Ukraine via [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) +> - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate/) fund [![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python) From 28da1e44d02d489631903612479d14d910532317 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Sat, 12 Mar 2022 17:46:46 +0100 Subject: [PATCH 05/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index edb4d6dd..16301256 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ > 🇺🇦 UKRAINE [IS BEING ATTACKED](https://twitter.com/MFA_Ukraine) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. > - Help Ukraine via [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) > - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate/) fund +> - More info on [war.ukraine.ua](https://war.ukraine.ua/) [![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python) From 756fbfefb54d0c5f0e848a0ccfc3bb05f6a83ef8 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Sat, 2 Jul 2022 17:50:47 +0200 Subject: [PATCH 06/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 16301256..ed382170 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Playground and Cheatsheet for Learning Python > 🇺🇦 UKRAINE [IS BEING ATTACKED](https://twitter.com/MFA_Ukraine) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. > - Help Ukraine via [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) -> - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate/) fund +> - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate-en/) fund > - More info on [war.ukraine.ua](https://war.ukraine.ua/) [![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python) From 684b6e1072519e73f7aa4d42f98ece4cabb1efe8 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Wed, 21 Sep 2022 09:11:01 +0200 Subject: [PATCH 07/13] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ed382170..b183acab 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # Playground and Cheatsheet for Learning Python -> 🇺🇦 UKRAINE [IS BEING ATTACKED](https://twitter.com/MFA_Ukraine) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. + +> 🇺🇦 UKRAINE [IS BEING ATTACKED](https://war.ukraine.ua/) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. > - Help Ukraine via [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) > - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate-en/) fund -> - More info on [war.ukraine.ua](https://war.ukraine.ua/) +> - More info on [war.ukraine.ua](https://war.ukraine.ua/) and [MFA of Ukraine](https://twitter.com/MFA_Ukraine) [![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python) From 4242402e7d4eed57d997cd764566409c65c7787c Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Wed, 21 Sep 2022 09:13:28 +0200 Subject: [PATCH 08/13] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b183acab..40701a3d 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ > - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate-en/) fund > - More info on [war.ukraine.ua](https://war.ukraine.ua/) and [MFA of Ukraine](https://twitter.com/MFA_Ukraine) +
+ [![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python) > This is a collection of Python scripts that are split by [topics](#table-of-contents) and contain From 72fa79eaa66d0bbb3487ce65194b5ea2eaea2e41 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Fri, 21 Oct 2022 22:23:13 +0200 Subject: [PATCH 09/13] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 40701a3d..862e42fe 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ Each Python script in this repository has the following structure: ```python """Lists <--- Name of the topic here +## Author + +- [@trekhleb](https://trekhleb.dev) + # @see: https://www.learnpython.org/en/Lists <-- Link to further readings goes here Here might go more detailed explanation of the current topic (i.e. general info about Lists). From 8344a56dacfef5405cf491bfc0eb3337500a0d56 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Fri, 21 Oct 2022 22:24:27 +0200 Subject: [PATCH 10/13] Update README.md --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 862e42fe..2ea49895 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,6 @@ Each Python script in this repository has the following structure: ```python """Lists <--- Name of the topic here -## Author - -- [@trekhleb](https://trekhleb.dev) - # @see: https://www.learnpython.org/en/Lists <-- Link to further readings goes here Here might go more detailed explanation of the current topic (i.e. general info about Lists). @@ -228,6 +224,6 @@ flake8 ./src --statistics --show-source --count [More about Flake8](http://flake8.pycqa.org/en/latest/) -## Supporting the project +## Author -You may support this project via ❤️️ [GitHub](https://github.com/sponsors/trekhleb) or ❤️️ [Patreon](https://www.patreon.com/trekhleb). +- [@trekhleb](https://trekhleb.dev) From 52c3a655cc2efd5ac01004f6f529c3262812a84e Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Fri, 21 Jul 2023 20:09:00 +0200 Subject: [PATCH 11/13] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2ea49895..f53cdf8f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # Playground and Cheatsheet for Learning Python > 🇺🇦 UKRAINE [IS BEING ATTACKED](https://war.ukraine.ua/) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. -> - Help Ukraine via [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) -> - Help Ukraine via [SaveLife](https://savelife.in.ua/en/donate-en/) fund +> - Help Ukraine via: +> - [Serhiy Prytula Charity Foundation](https://prytulafoundation.org/en/) +> - [Come Back Alive Charity Foundation](https://savelife.in.ua/en/donate-en/) +> - [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) > - More info on [war.ukraine.ua](https://war.ukraine.ua/) and [MFA of Ukraine](https://twitter.com/MFA_Ukraine)
From 7d36c78b5f8f8d1238499f20d88bdc8081a0354e Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb <3000285+trekhleb@users.noreply.github.com> Date: Sat, 22 Nov 2025 20:23:31 -0800 Subject: [PATCH 12/13] Delete .github/FUNDING.yml --- .github/FUNDING.yml | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index deda41e7..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -# @see: https://docs.github.com/en/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository -github: trekhleb -patreon: trekhleb From 5e4fad5903ce5a76cc1f90838d69a220968e1494 Mon Sep 17 00:00:00 2001 From: Serhii Shramko Date: Mon, 6 Apr 2026 12:03:15 -0400 Subject: [PATCH 13/13] =?UTF-8?q?Add=20Ukrainian=20translation=20?= =?UTF-8?q?=F0=9F=87=BA=F0=9F=87=A6=20=20(#112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: add Ukrainian translation of README Add README.uk-UA.md with full Ukrainian translation following the 2019 Ukrainian orthography rules. Update language navigation links in all existing README translations (en, es-ES, pt-BR, zh-TW). * docs(i18n): add Ukrainian translations for getting started guides Translate what_is_python.md and python_syntax.md to Ukrainian, and update links in README.uk-UA.md to point to the translated versions. --- README.es-ES.md | 2 +- README.md | 2 +- README.pt-BR.md | 2 +- README.uk-UA.md | 213 ++++++++++++++++++++ README.zh-TW.md | 2 +- src/getting_started/python_syntax.uk-UA.md | 49 +++++ src/getting_started/what_is_python.uk-UA.md | 37 ++++ 7 files changed, 303 insertions(+), 4 deletions(-) create mode 100644 README.uk-UA.md create mode 100644 src/getting_started/python_syntax.uk-UA.md create mode 100644 src/getting_started/what_is_python.uk-UA.md 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)