From 5ccebd19c81160db600183f647cd4330207d3a6b Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 22 Oct 2018 17:20:57 +0300 Subject: [PATCH 01/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D1=82=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_tutorial/29_english.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/0_tutorial/29_english.md b/0_tutorial/29_english.md index 61d1446f..3a3486a1 100644 --- a/0_tutorial/29_english.md +++ b/0_tutorial/29_english.md @@ -4,6 +4,9 @@ использования открытого кода, создания открытого кода, создания багрепортов, обсуждения багрепортов, получения актуальных новостей, общения на митапах и конференциях. +Отдельно про написание кода: вот встречаются в коде опечатки, неправильный перевод при названии переменной +или частые опечатки в документации – и всё, ощущение хорошего продукта улетучивается. + Хорошая новость в том, что никому не нужно, чтобы тебя путали с носителем языка. Достаточно базового знания грамматики, чтобы правильно понимать смысл, и лексики, чтобы поменьше тыкать в переводчик. From 3c557c911ea1127266e5ab1d245ca0188053011c Mon Sep 17 00:00:00 2001 From: AnnaKo Date: Mon, 22 Oct 2018 17:31:42 +0300 Subject: [PATCH 02/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BF=D1=80=D0=BE=20=D0=BC=D0=BD=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B2=D0=B0,=20=D1=8D=D1=82=D0=BE=20=D0=B2?= =?UTF-8?q?=D0=B0=D0=B6=D0=BD=D0=B0=D1=8F=20=D1=82=D0=B5=D0=BC=D0=B0,=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D1=81=D1=82=D0=BE=D0=B8=D1=82=20=D0=B5=D1=91=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_python_basics/4_types.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/1_python_basics/4_types.md b/1_python_basics/4_types.md index 4fea472d..4dfc83f9 100644 --- a/1_python_basics/4_types.md +++ b/1_python_basics/4_types.md @@ -95,3 +95,14 @@ print '%s: %s' % (key, value) # name: Иван # level: 2 + +###Множества + +Множество – это математическое множество. В нём все элементы уникальные, можно считать пересечение, +проверять на вхождение и выполнять другие операции с множествами. + +Один из частых случаев применения множеств – удаление дублей из списка: + + :::python + l = [1, 2, 1, 3, 2] + print(list(set(l))) # [1, 2, 3] From 4a920e4c405b1b7f4663aee24ac71f0deff7deba Mon Sep 17 00:00:00 2001 From: AnnaKo Date: Mon, 22 Oct 2018 17:32:41 +0300 Subject: [PATCH 03/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BF=D0=BE=D1=8F=D1=81=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=87=D1=82=D0=BE=20=D0=B4=D0=B5=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B2=20=D1=81=D0=B0=D0=BC=D0=BE=D0=BC=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=BE=D1=85=D0=BE=D0=BC=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_python_basics/5_modules.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/1_python_basics/5_modules.md b/1_python_basics/5_modules.md index 778a0586..346b89cf 100644 --- a/1_python_basics/5_modules.md +++ b/1_python_basics/5_modules.md @@ -127,6 +127,10 @@ ###Как работает под капотом +Иногда бывает так, что нужный модуль находится вне тех папок, которые обходит Питон. Один из вариантов побороть это + – вручную добавить нужный путь в `sys.path` (это список). Но это на крайний случай, обычно есть более красивые способы. +Например, упаковать код в модуль и установить его с помощью pip. Так что тсс, я вам ничего не говорил. + В памяти все загруженные модули хранятся в `sys.modules`. Иногда встречаются случаи, когда файла нет, а модуль есть. Это не сложно устроить: From 4312345fc0d56efa08c66b4fc6396f0832ea460a Mon Sep 17 00:00:00 2001 From: AnnaKo Date: Mon, 22 Oct 2018 17:33:19 +0300 Subject: [PATCH 04/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BA=D1=80=D0=B8=D1=82=D0=B5=D1=80=D0=B8=D0=B9?= =?UTF-8?q?=20=D1=85=D0=BE=D1=80=D0=BE=D1=88=D0=B5=D0=B3=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_python_basics/6_tips_and_tricks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/1_python_basics/6_tips_and_tricks.md b/1_python_basics/6_tips_and_tricks.md index 67cf6c5f..9ee8c33b 100644 --- a/1_python_basics/6_tips_and_tricks.md +++ b/1_python_basics/6_tips_and_tricks.md @@ -156,6 +156,8 @@ а во втором какой-нибудь `user` или `book`, в зависимости от того, что в списке. Длинные названия – не проблема, у всех давно есть автокомплит. - **на английском**: никаких `kniga` или `polsovatel`. Брр. +- **уникальными**: в Питоне есть [встроенные функции](https://docs.python.org/3.5/library/functions.html), +называть переменные их именами нельзя: тогда функция станет недоступна. Среди них есть file, dict, all, str. ###Больше функций From 407568c8bd7ac9321ebb4e83b43586de143738ae Mon Sep 17 00:00:00 2001 From: AnnaKo Date: Thu, 17 Jan 2019 18:03:16 +0300 Subject: [PATCH 05/16] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_python_basics/4_types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1_python_basics/4_types.md b/1_python_basics/4_types.md index 4dfc83f9..8302c8e0 100644 --- a/1_python_basics/4_types.md +++ b/1_python_basics/4_types.md @@ -96,7 +96,7 @@ # name: Иван # level: 2 -###Множества +### Множества Множество – это математическое множество. В нём все элементы уникальные, можно считать пересечение, проверять на вхождение и выполнять другие операции с множествами. From 30be919737662415643b842ca701f6319c51cadf Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Sat, 11 Oct 2025 11:40:37 +0300 Subject: [PATCH 06/16] Add files via upload --- pravki_igoria.zip | Bin 0 -> 5252 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pravki_igoria.zip diff --git a/pravki_igoria.zip b/pravki_igoria.zip new file mode 100644 index 0000000000000000000000000000000000000000..1c98a4f7eb83b6f9f42091c6918f95e4d2f93f77 GIT binary patch literal 5252 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 literal 0 HcmV?d00001 From ab8ef6274d6c17ca744c29d76e9df503daddac0e Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Sat, 11 Oct 2025 11:42:11 +0300 Subject: [PATCH 07/16] Delete pravki_igoria.zip --- pravki_igoria.zip | Bin 5252 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pravki_igoria.zip diff --git a/pravki_igoria.zip b/pravki_igoria.zip deleted file mode 100644 index 1c98a4f7eb83b6f9f42091c6918f95e4d2f93f77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5252 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 From be7e964f4fd80efe2a022971987c6ebe284298f4 Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 02:32:49 +0300 Subject: [PATCH 08/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=98?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_tutorial/14_google.md | 20 ++++++++++++++++++++ 0_tutorial/8_cli.md | 16 ++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 0_tutorial/14_google.md create mode 100644 0_tutorial/8_cli.md diff --git a/0_tutorial/14_google.md b/0_tutorial/14_google.md new file mode 100644 index 00000000..1e973717 --- /dev/null +++ b/0_tutorial/14_google.md @@ -0,0 +1,20 @@ +Правильно искать информацию в сети – важно. Подберёшь неправильный запрос – не найдёшь нужной ссылки. +Иногда приходится делать много попыток, чтобы найти то, что надо. Тратишь полчаса на поиск решения проблемы, +а какой-нибудь Вася найдёт то же, но за один запрос. + +В итоге правильное использование поиска не только позволяет экономить время, но и не чувствовать себя идиотом. + + +> Это же чёртов поиск, написал запрос – увидел результат. Чего сложного? + +Сложно написать запрос правильно. Оказывается, Гугл умеет много вещей, которые очень помогают искать информацию. +Их надо знать и использовать. + +Вот где о них можно узнать: + +- [Мини-курс Power Searching With Google](https://coursebuilder.withgoogle.com/sample/course) (en). Да, у Гугла есть +онлайн-курс про то, как пользоваться Гуглом (даже два курса). Видео-лекции, домашние задания. Всё серьёзно. +Очень рекомендую: он короткий и очень подробный. +- [Google Tips & Tricks](https://www.google.com/intl/en_us/insidesearch/tipstricks/all.html) (en). +- [Как правильно искать в Google](https://habrahabr.ru/sandbox/46956/). +- [Google без секретов (операторы Гугла в практических примерах)](http://it2b.ru/blog/arhiv/761.html). diff --git a/0_tutorial/8_cli.md b/0_tutorial/8_cli.md new file mode 100644 index 00000000..20fd20af --- /dev/null +++ b/0_tutorial/8_cli.md @@ -0,0 +1,16 @@ +Консоль – основной способ взаимодействия разработчика с системой. С ней надо уметь взаимодействовать +не хуже, чем с графическим интерфейсом. + +А вот ресурсы, на которых есть план минимум и больше: + +- [ШПАРГАЛКА. Команды Unix - Linux](http://forum.ubuntu.ru/index.php?topic=14535.15). Неожиданно полезная тема на форуме Убунту. +- [Цикл статей на linuxrussia](http://www.linuxrussia.com/2013/08/terminal-linux-1.html). +- [Unix shell: абсолютно первые шаги](https://habrahabr.ru/post/267825/). +- [Туториал от университета Суррей](http://www.ee.surrey.ac.uk/Teaching/Unix/index.html) (en). +- [Туториал от Райана](http://ryanstutorials.net/linuxtutorial/) (en). Есть [шпаргалка](http://ryanstutorials.net/linuxtutorial/cheatsheet.php). + +Обрати внимание, что есть shell scripting – прямо в консоли можно городить циклы, условия и вообще писать вполне себе программы. +Лучше обойти это стороной прямо сейчас: это довольно специфичный навык, которые не каждому пригождается. + +Мне в своё время очень помогла книга ["Linux. Необходимый код и команды. Карманный справочник"](https://www.ozon.ru/context/detail/id/3178480/). +Она компактная, подробная и понятная. Рекомендую. From 5b19efd6d10843518b5b8c721ac6b6882e64248a Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 02:34:24 +0300 Subject: [PATCH 09/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_python_basics/3_base_constructions.md | 99 +++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 1_python_basics/3_base_constructions.md diff --git a/1_python_basics/3_base_constructions.md b/1_python_basics/3_base_constructions.md new file mode 100644 index 00000000..8b8c8641 --- /dev/null +++ b/1_python_basics/3_base_constructions.md @@ -0,0 +1,99 @@ +### Коротко о главных управляющих конструкциях + +Сейчас мы совсем реактивно пройдёмся по самым основным управляющим конструкциям. Гет реди. + + +### if + +Ну, вы все знаете условный оператор, так ведь? + + :::python + if age < 18: + print('Никаких тебе сигарет. Ишь чего удумал!') + else: + print('Вам синий или красный?') + + +Есть ещё `elif`, их можно сделать много в одном операторе. Это такой аналог `which` из других языков. + + +### for + +Цикл. Вместо сишного варианта с init, cond и loop выражениями, тут просто итерация по коллекции: + + :::python + for user in users: + print user + +Иногда надо не пройтись по списку, а выполнить одну и ту же операцию много раз. Тогда хорошо подходит функция +[range](https://docs.python.org/3.5/library/functions.html#func-range). Она возвращает целые числа в заданном промежутке, +поэтому в цикле её можно использовать так: + + :::python + for level_num in range(10): + user.levelup() # пользователь получит десять уровней. Читер! + +А вот `break` и `continue` делают то же, что в Паскале и Сях. `break` прерывает выполнение цикла, +`continue` завершает текущую итерацию и переходит к следующей. + +Ещё у цикла есть `else`, но про него почти никто не знает. Как он работает можно посмотреть +[в официальной документации](https://docs.python.org/3.5/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops). + + +### def + +Начало объявления функции. После него идёт название, +потом – аргументы функции в скобках, двоеточие и тело функции с отступом: + + :::python + def get_square(value): + return value ** 2 + +То, что после `return` – это возвращаемое значение функции. + +Функцию создали, вот как её теперь использовать: + + :::python + print(get_square(2)) # 4 + print(get_square(6)) # 36 + print(get_square('ыыы')) # всё сломается + +А вот пример посложнее, из исходников Девмана. Получает пользователя по айди в Слаке: + + :::python + def _get_user_by_slack_id(slack_user_id): + user_email = get_slack_email_for_user(slack_user_id) + return User.objects.filter(email__iexact=user_email).first() + +(вот почему емейл необходим) + + +### range + +Функция очень полезная, поэтому про неё отдельно. `range` генерирует целые числа в заданном диапазоне. Например: + + :::python + range(10) # 0..0 + range(5, 10) # 5..9 + range(5, 10, 2) # [5, 7, 9] (от пяти до девяти с шагом два) + +Фишка этой функции заключается в том, что она не создаёт список со всеми числами. +Вместо этого он вернёт объект, который будет возвращать элементы как только они нужны, по одному. +Поэтому код `range(9999999999999)` не съест всю память. +Этот хитрый объект (Sequence ABC, но об этом потом) можно превратить в список явно: + + :::python + list(range(9999999999999)) + +(не советую так делать) + + +### pass + +Блок, который ничего не делает: + + :::python + for i in range(20): + pass # 20 раз сделать ничего. Очень полезно! + +Часто используется в начальном коде для заданий: в финальной версии вместо `pass` должен быть настоящий код. From adc2ccc7fe2ab85e0007eedce6ad2967584f4af0 Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 02:38:03 +0300 Subject: [PATCH 10/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BC=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=B0=D0=BB=D1=8B=20=D0=BE=D1=82=20=D0=9B=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_python_basics/18_comments.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/1_python_basics/18_comments.md b/1_python_basics/18_comments.md index e965248d..9c99b603 100644 --- a/1_python_basics/18_comments.md +++ b/1_python_basics/18_comments.md @@ -94,3 +94,11 @@ или `FIXME: учитывать часовой пояс`. Прежде чем написать комментарий, попробуй поселить его в коде, указав параметр или дав подходящее название переменной. + + +## Что изучать + +- [Доклад Григория Петрова про комментирование исходников](https://www.youtube.com/watch?v=-SRUctRR_4s). Обязателен к просмотру. +- [PEP 257](https://www.python.org/dev/peps/pep-0257/). ПЕП про докстринги. +- [doctest](https://docs.python.org/3.5/library/doctest.html). Документация к модулю про доктесты. +- [What is the best comment in source code you have ever encountered?](http://stackoverflow.com/questions/184618/). Шутить в коде не стоит, а вот посмеяться с чужих шуток можно. Это ж не нам поддерживать. From ca4064e713b965f3847c670780211a6e5fcf9080 Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 02:38:48 +0300 Subject: [PATCH 11/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BC=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=B0=D0=BB=D1=8B=20=D0=BE=D1=82=20=D0=9B=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_tutorial/9_git.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/0_tutorial/9_git.md b/0_tutorial/9_git.md index c42b5d95..3907bb16 100644 --- a/0_tutorial/9_git.md +++ b/0_tutorial/9_git.md @@ -3,4 +3,6 @@ Следующий шаг – [туториал на githowto.com](https://githowto.com/ru), он на русском и куда длиннее. -Гитхаб – это что-то типа Фейсбука для программистов. Код вместо постов, баги вместо котиков. Идиллия. \ No newline at end of file +Гитхаб – это что-то типа Фейсбука для программистов. Код вместо постов, баги вместо котиков. Идиллия. +Чтобы познакомиться с ним ближе, рекомендую выполнить их [Hello World](https://guides.github.com/activities/hello-world/). +После можно пройти [остальные руководства от Гитхаба](https://guides.github.com/), это очень полезные навыки для разработчика. From 3507625258ac10d4d348e2a2125acdc393266512 Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 04:07:31 +0300 Subject: [PATCH 12/16] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=81=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 29_english.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 29_english.md diff --git a/29_english.md b/29_english.md new file mode 100644 index 00000000..98e7b7e4 --- /dev/null +++ b/29_english.md @@ -0,0 +1,33 @@ +Без знания английского ты не готов работать программистом. + +Английский нужен для всего: написания кода, чтения кода, чтения документации, +использования открытого кода, создания открытого кода, создания багрепортов, +обсуждения багрепортов, получения актуальных новостей, общения на митапах и конференциях. + +Отдельно про написание кода: вот встречаются в коде опечатки, неправильный перевод при названии переменной +или частые опечатки в документации – и всё, ощущение хорошего продукта улетучивается. + +Хорошая новость в том, что никому не нужно, чтобы тебя путали с носителем языка. Достаточно базового знания грамматики, +чтобы правильно понимать смысл, и лексики, чтобы поменьше тыкать в переводчик. + +О переводчике: я пользуюсь [Мультитраном](http://www.multitran.ru/) и отлично себя чувствую. +Из других используемых вариантов – [Гугл.Переводчик](https://translate.google.ru/) и всякие стандартные словари в Маке +и Яндекс.Браузере. + +Чтобы выучить или подтянуть английский, рекомендую один из двух путей: + +- *[Лингвалео](https://lingualeo.com/)*. Бюджетный вариант: поможет выучить всё, что надо, если у тебя железная воля. +Можно пользоваться бесплатно, но платный аккаунт стоит около тысячи рублей в год и даёт кучу плюшек. Впрочем, +быстрого прогресса тут ждать не стоит. +- *[Скайенг](http://skyeng.ru/)*. Крутой и технологичный сервис, который даст хорошего преподавателя и +гарантирует результат. Филонить не получится: это занятия с репетиром по скайпу. +Стоит существенно дороже – от 700 рублей за занятие, но я не слышал ни одного плохого отзыва. +Выбирай, если нужно за несколько месяцев добиться цели "технический английский". + +Мой знакомый при проверке уровня английского на собеседовании использует такой приём: просит прочитать и +перевести страницу документации к любимой библиотеке того, кто пришёл на собеседование. +Смотрит на точность и скорость перевода. + +Так же можно проверять себя самостоятельно: открывать случайную страницу документации Питона, читать +и смотреть, насколько всё плохо. Если всё понятно после пары визитов в словарь – всё в порядке. +Если потеешь четверть часа и всё равно непонятно, о чём речь – надо учить. From 683c65ef68cd9b6ced626c6f7aa6056b0f7e368c Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 04:26:02 +0300 Subject: [PATCH 13/16] Delete 29_english.md --- 29_english.md | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 29_english.md diff --git a/29_english.md b/29_english.md deleted file mode 100644 index 98e7b7e4..00000000 --- a/29_english.md +++ /dev/null @@ -1,33 +0,0 @@ -Без знания английского ты не готов работать программистом. - -Английский нужен для всего: написания кода, чтения кода, чтения документации, -использования открытого кода, создания открытого кода, создания багрепортов, -обсуждения багрепортов, получения актуальных новостей, общения на митапах и конференциях. - -Отдельно про написание кода: вот встречаются в коде опечатки, неправильный перевод при названии переменной -или частые опечатки в документации – и всё, ощущение хорошего продукта улетучивается. - -Хорошая новость в том, что никому не нужно, чтобы тебя путали с носителем языка. Достаточно базового знания грамматики, -чтобы правильно понимать смысл, и лексики, чтобы поменьше тыкать в переводчик. - -О переводчике: я пользуюсь [Мультитраном](http://www.multitran.ru/) и отлично себя чувствую. -Из других используемых вариантов – [Гугл.Переводчик](https://translate.google.ru/) и всякие стандартные словари в Маке -и Яндекс.Браузере. - -Чтобы выучить или подтянуть английский, рекомендую один из двух путей: - -- *[Лингвалео](https://lingualeo.com/)*. Бюджетный вариант: поможет выучить всё, что надо, если у тебя железная воля. -Можно пользоваться бесплатно, но платный аккаунт стоит около тысячи рублей в год и даёт кучу плюшек. Впрочем, -быстрого прогресса тут ждать не стоит. -- *[Скайенг](http://skyeng.ru/)*. Крутой и технологичный сервис, который даст хорошего преподавателя и -гарантирует результат. Филонить не получится: это занятия с репетиром по скайпу. -Стоит существенно дороже – от 700 рублей за занятие, но я не слышал ни одного плохого отзыва. -Выбирай, если нужно за несколько месяцев добиться цели "технический английский". - -Мой знакомый при проверке уровня английского на собеседовании использует такой приём: просит прочитать и -перевести страницу документации к любимой библиотеке того, кто пришёл на собеседование. -Смотрит на точность и скорость перевода. - -Так же можно проверять себя самостоятельно: открывать случайную страницу документации Питона, читать -и смотреть, насколько всё плохо. Если всё понятно после пары визитов в словарь – всё в порядке. -Если потеешь четверть часа и всё равно непонятно, о чём речь – надо учить. From d335c1ed24508ec80c7f1cdd8dfe1b8294f7fb7c Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 04:26:47 +0300 Subject: [PATCH 14/16] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_tutorial/29_english.md | 66 ++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/0_tutorial/29_english.md b/0_tutorial/29_english.md index 8a39ac01..7d3ddfad 100644 --- a/0_tutorial/29_english.md +++ b/0_tutorial/29_english.md @@ -1,33 +1,33 @@ -Без знания английского ты не готов работать программистом. - -Английский нужен для всего: написания кода, чтения кода, чтения документации, -использования открытого кода, создания открытого кода, создания багрепортов, -обсуждения багрепортов, получения актуальных новостей, общения на митапах и конференциях. - -Самый ад – названия переменных по-русски, транслитом. Таким людям положен Сименс М65 без русской раскладки, а не работа -программистом. - -Хорошая новость в том, что никому не нужно, чтобы тебя путали с носителем языка. Достаточно базового знания грамматики, -чтобы правильно понимать смысл, и лексики, чтобы поменьше тыкать в переводчик. - -О переводчике: я пользуюсь [Мультитраном](http://www.multitran.ru/) и отлично себя чувствую. -Из других используемых вариантов – [Гугл.Переводчик](https://translate.google.ru/) и всякие стандартные словари в Маке -и Яндекс.Браузере. - -Чтобы выучить или подтянуть английский, рекомендую один из двух путей: - -- *[Лингвалео](https://lingualeo.com/)*. Бюджетный вариант: поможет выучить всё, что надо, если у тебя железная воля. -Можно пользоваться бесплатно, но платный аккаунт стоит около тысячи рублей в год и даёт кучу плюшек. Впрочем, -быстрого прогресса тут ждать не стоит. -- *[Скайенг](http://skyeng.ru/)*. Крутой и технологичный сервис, который даст хорошего преподавателя и -гарантирует результат. Филонить не получится: это занятия с репетиром по скайпу. -Стоит существенно дороже – от 700 рублей за занятие, но я не слышал ни одного плохого отзыва. -Выбирай, если нужно за несколько месяцев добиться цели "технический английский". - -Мой знакомый при проверке уровня английского на собеседовании использует такой приём: просит прочитать и -перевести страницу документации к любимой библиотеке того, кто пришёл на собеседование. -Смотрит на точность и скорость перевода. - -Так же можно проверять себя самостоятельно: открывать случайную страницу документации Питона, читать -и смотреть, насколько всё плохо. Если всё понятно после пары визитов в словарь – всё в порядке. -Если потеешь четверть часа и всё равно непонятно, о чём речь – надо учить. +Без знания английского ты не готов работать программистом. + +Английский нужен для всего: написания кода, чтения кода, чтения документации, +использования открытого кода, создания открытого кода, создания багрепортов, +обсуждения багрепортов, получения актуальных новостей, общения на митапах и конференциях. + +Самый ад – названия переменных по-русски, транслитом. Таким людям положен Сименс М65 без русской раскладки, а не работа +программистом. + +Хорошая новость в том, что никому не нужно, чтобы тебя путали с носителем языка. Достаточно базового знания грамматики, +чтобы правильно понимать смысл, и лексики, чтобы поменьше тыкать в переводчик. + +О переводчике: я пользуюсь [Мультитраном](http://www.multitran.ru/) и отлично себя чувствую. +Из других используемых вариантов – [Гугл.Переводчик](https://translate.google.ru/) и всякие стандартные словари в Маке +и Яндекс.Браузере. + +Чтобы выучить или подтянуть английский, рекомендую один из двух путей: + +- *[Лингвалео](https://lingualeo.com/)*. Бюджетный вариант: поможет выучить всё, что надо, если у тебя железная воля. +Можно пользоваться бесплатно, но платный аккаунт стоит около тысячи рублей в год и даёт кучу плюшек. Впрочем, +быстрого прогресса тут ждать не стоит. +- *[Скайенг](http://skyeng.ru/)*. Крутой и технологичный сервис, который даст хорошего преподавателя и +гарантирует результат. Филонить не получится: это занятия с репетиром по скайпу. +Стоит существенно дороже – от 700 рублей за занятие, но я не слышал ни одного плохого отзыва. +Выбирай, если нужно за несколько месяцев добиться цели "технический английский". + +Мой знакомый при проверке уровня английского на собеседовании использует такой приём: просит прочитать и +перевести страницу документации к любимой библиотеке того, кто пришёл на собеседование. +Смотрит на точность и скорость перевода. + +Так же можно проверять себя самостоятельно: открывать случайную страницу документации Питона, читать +и смотреть, насколько всё плохо. Если всё понятно после пары визитов в словарь – всё в порядке. +Если потеешь четверть часа и всё равно непонятно, о чём речь – надо учить. From 2e4771737097cd3b424f6f4663a8ec4bce772f4e Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 16:02:12 +0300 Subject: [PATCH 15/16] =?UTF-8?q?Revert=20"=D0=A7=D1=82=D0=BE=20=D1=8D?= =?UTF-8?q?=D1=82=D0=BE=20=D0=B7=D0=B0=20"python"=20=D0=B2=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=B0=D0=BB=D0=B5=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=3F=20=D0=BA=D0=B0=D0=B6=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F,=20=D0=BE=D0=BD=D0=B8=20=D0=BB=D0=B8=D1=88?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 78cfede6d81bd3aa87c72e85b4410218b7e370e2. --- 1_python_basics/18_comments.md | 7 +++++++ 1_python_basics/2_base_types.md | 5 +++++ 1_python_basics/4_types.md | 6 ++++++ 1_python_basics/5_modules.md | 1 + 1_python_basics/6_tips_and_tricks.md | 15 +++++++++++++++ 5 files changed, 34 insertions(+) diff --git a/1_python_basics/18_comments.md b/1_python_basics/18_comments.md index 9c99b603..81c9d20e 100644 --- a/1_python_basics/18_comments.md +++ b/1_python_basics/18_comments.md @@ -4,6 +4,7 @@ Комментарии – способ прокомментировать код на ходу, на той же строке. + :::python price = Column(BigInteger) # рубли * 100 @@ -13,6 +14,7 @@ Она нужна для документирования всей функции: описания входящих параметров, результата, логики, крайних случаев. Заключается в тройные двойные кавычки. Вот так: + :::python def tensorsolve(a, b, axes=None): """ Solve the tensor equation ``a x = b`` for x. @@ -40,17 +42,20 @@ В таком случае комментарий не несёт дополнительной информации, а просто переводит соседний код с Питона на русский/английский. Пример: + :::python # загружаем данные из файла data.json with open('users.json', 'r') as handler: data = json.load(handler) Вот как можно исправить: + :::python with open('users.json', 'r') as handler: data = json.load(handler) А так – ещё лучше: + :::python data = load_all_users_from_file() @@ -59,6 +64,7 @@ Другая частая ошибка: не менять комментарии при изменении кода. В примере выше мы загружали данные из файла. Через месяц взялись за голову и поселили данные в базе данных. Код стал таким: + :::python # загружаем данные из файла data.json data = db_session.query(User).all() @@ -71,6 +77,7 @@ В таком состоянии всё поведение кажется понятным, поэтому разработчик может оставить комментарий самому себе. Проблема в том, что когда он переключится на другую задачу и забудет про детали, комментарий может взорвать мозг: + :::python inv(strain_tensor) - rigidity.T # правый случай Правый, правда? Ну, теперь всё понятно. diff --git a/1_python_basics/2_base_types.md b/1_python_basics/2_base_types.md index 5859100c..c97b8b67 100644 --- a/1_python_basics/2_base_types.md +++ b/1_python_basics/2_base_types.md @@ -7,6 +7,7 @@ Числа – и в Африке числа. С ними можно производить арифметические действия. Всё просто: + :::python 2 + 2 # 4 3 + 2.5 # 5.5 6 / 2 # 3 @@ -19,6 +20,7 @@ Помимо чисел в Питоне есть строки с богатым набором встроенных функций. С ними просто и удобно работать: + :::python 'hello' # строковая константа "hello" # тип кавычек не имеет значения hello[1] # 'e' @@ -27,6 +29,7 @@ У них много встроенных функций: + :::python 'hello '.strip() # 'hello' 'hello world'.upper() # 'HELLO WORLD' len('hello') # 5 @@ -43,6 +46,7 @@ Элементы могут быть разных типов, даже другими списками. Выглядит он так: + :::python [1, 2, 3] # в квадратных скобках, элементы через запятую digits = [4, 5, 6] # переменная, в которой живёт список digits[0] # 4 (нумерация с нуля) @@ -52,6 +56,7 @@ Из списка надо часто получить подсписок: несколько первых элементов, последних, что-то из середины. Это называется срезами и позволяет делать много чего. Вот самые простые срезы: + :::python squares = [1, 4, 9, 16, 25, 36, 49] squares[1:3] # [4, 9] (элементы со второго по третий) squares[:4] # [1, 4, 9, 16] (элементы с начала до четвёртого) diff --git a/1_python_basics/4_types.md b/1_python_basics/4_types.md index eea968aa..cf99b14d 100644 --- a/1_python_basics/4_types.md +++ b/1_python_basics/4_types.md @@ -28,6 +28,7 @@ Ещё строки можно форматировать, причём несколькими способами. Вот один из них: + :::python name = 'Пётр' height = 1.865 print('Привет, %s! Твой рост – %.2f м.' % (name, height)) @@ -52,6 +53,7 @@ Часто бывает надо взять исходный список и сформировать из него новый, применив к каждому элементу исходного какое-то преобразование и как-то отфильтровав. Например, так: + :::python values = [1, 2, 3, 4, 5] new_values = [] for value in values: @@ -62,6 +64,7 @@ Эта операция настолько частая, что для неё есть отдельная конструкция – list comprehension. Выглядит она так: + :::python values = [1, 2, 3, 4, 5] new_values = [value ** 2 for value in values if value % 2] @@ -72,12 +75,14 @@ Словарь – это отображение одних элементов в другие. Первые называют ключами, вторые – значениями. + :::python user_info = {'name': 'Иван', 'level': 2} print(user_info['name']) # Иван Из словаря можно удалять, менять и добавлять в него элементы: + :::python user_info = {'name': 'Иван', 'level': 2} user_info['middle_name'] = 'Иванович' user_info['name'] = 'Грирогий' @@ -90,6 +95,7 @@ Ещё у словарей есть несколько важных методов: `keys`, `values` и `items`. Первый возвращает список только ключей, второй – список только значений, третий – список пар из ключей и значений. Удобно при итерации по словарю: + :::python user_info = {'name': 'Иван', 'level': 2} for key, value in user_info.items(): print '%s: %s' % (key, value) diff --git a/1_python_basics/5_modules.md b/1_python_basics/5_modules.md index 3a282a52..45e50a03 100644 --- a/1_python_basics/5_modules.md +++ b/1_python_basics/5_modules.md @@ -139,6 +139,7 @@ В памяти все загруженные модули хранятся в `sys.modules`. Иногда встречаются случаи, когда файла нет, а модуль есть. Это не сложно устроить: + :::python # mod.py import sys from types import ModuleType diff --git a/1_python_basics/6_tips_and_tricks.md b/1_python_basics/6_tips_and_tricks.md index 5ef40ae3..5a0b981a 100644 --- a/1_python_basics/6_tips_and_tricks.md +++ b/1_python_basics/6_tips_and_tricks.md @@ -5,22 +5,26 @@ Раньше в C++ итерация по коллекции проходила так: + :::cpp for(int i = 0; i < books_amount; i++) { cout << books[i]; } Этот же способ используется в других языках. Поэтому на Питоне хочется написать так же: + :::python for i in len(books): print(books[i]) Это неудобная дичь, древность и вообще. Вот как надо: + :::python for book in books: print(book) Часто вместе с элементом нужен его номер. Памятуя, что можно итерировать по коллекции, хочется сделать как-то так: + :::python i = 0 for book in books: print(i, book) @@ -28,6 +32,7 @@ Это тоже неудобная дичь, древность и вообще. Для этого есть встроенная функция `enumerate`: + :::python for book_number, book in enumerate(books): print(book_number, book) @@ -43,6 +48,7 @@ Для "ничего" в Питоне есть `None`. Не пустая строка и не -1, а именно `None`: + :::python try: latitude = float(input('Введите широту: ')) except ValueError: @@ -59,12 +65,14 @@ Загрузим json из файла: + :::python def load_json_data(filepath): with open(filepath, 'r') as file_handler: return json.load(file_handler) Всё сломается, если передать путь до несуществующего файла. Исправим: + :::python def load_json_data(filepath): if os.path.exists(filepath): with open(filepath, 'r') as file_handler: @@ -76,6 +84,7 @@ функции смысла нет. Избавляемся от `else`: + :::python def load_json_data(filepath): if os.path.exists(filepath): with open(filepath, 'r') as file_handler: @@ -87,6 +96,7 @@ Упростить можно так: + :::python def load_json_data(filepath): if not os.path.exists(filepath): return None @@ -100,21 +110,25 @@ Часто в коде приходится проверять переменные на нулевые значения. Например, пустой список: + :::python if len(users) == 0: pass Или пустая строка: + :::python if user.email == '': pass Или ноль: + :::python if user.level == 0: pass Все три примера выше – неверные. Вот их верные аналоги: + :::python if not users: pass @@ -173,6 +187,7 @@ Понятным – это когда с первого взгляда понятно, что он делает: + :::python credentials = load_oauth_credentials_from_file('fb_creds.json') fb_api = get_facebook_api(credentials) messages = fb_api.get_unread_messages() From 95f8db51f101a71fc1c61e00abc5af6d6cec7307 Mon Sep 17 00:00:00 2001 From: Alisa Choi Date: Fri, 17 Oct 2025 16:58:00 +0300 Subject: [PATCH 16/16] Update 29_english.md --- 0_tutorial/29_english.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/0_tutorial/29_english.md b/0_tutorial/29_english.md index d66508dd..b78986fd 100644 --- a/0_tutorial/29_english.md +++ b/0_tutorial/29_english.md @@ -5,6 +5,8 @@ использования открытого кода, создания открытого кода, создания багрепортов, обсуждения багрепортов, получения актуальных новостей, общения на митапах и конференциях. +Отдельно про написание кода: вот встречаются в коде опечатки, неправильный перевод при названии переменной +или частые опечатки в документации – и всё, ощущение хорошего продукта улетучивается. Самый ад – названия переменных по-русски, транслитом. Таким людям положен Сименс М65 без русской раскладки, а не работа программистом.