From 9cac35eb7ea57ef01ad475f826301b480ceb4a15 Mon Sep 17 00:00:00 2001 From: ButbkaDrug Date: Sat, 26 Aug 2023 08:35:39 +0400 Subject: [PATCH] Forgot to undraft the latest post :( AGAIN --- content/posts/rpg_lvl_02.md | 2 +- public/authors/index.html | 2 +- public/authors/index.xml | 4 +- public/authors/viktar-ivanou/index.html | 9 +- public/authors/viktar-ivanou/index.xml | 21 +- public/categories/index.html | 2 +- public/categories/index.xml | 4 +- public/categories/learning/index.html | 9 +- public/categories/learning/index.xml | 21 +- public/index.xml | 21 +- public/posts/index.html | 8 +- public/posts/index.xml | 21 +- public/posts/invisible-message/index.html | 68 +++- public/posts/role-playing-game/index.html | 88 ++++- public/posts/rpg_lvl_00/index.html | 53 ++- public/posts/rpg_lvl_01/index.html | 149 ++++++-- public/posts/rpg_lvl_02/index.html | 437 ++++++++++++++++++++++ public/series/index.html | 2 +- public/series/index.xml | 4 +- public/series/magic-world/index.html | 9 +- public/series/magic-world/index.xml | 21 +- public/sitemap.xml | 25 +- public/tags/index.html | 4 +- public/tags/index.xml | 6 +- public/tags/python/index.html | 9 +- public/tags/python/index.xml | 21 +- public/tags/rpg/index.html | 9 +- public/tags/rpg/index.xml | 21 +- 28 files changed, 921 insertions(+), 129 deletions(-) create mode 100644 public/posts/rpg_lvl_02/index.html diff --git a/content/posts/rpg_lvl_02.md b/content/posts/rpg_lvl_02.md index 35b000b..eb511a1 100644 --- a/content/posts/rpg_lvl_02.md +++ b/content/posts/rpg_lvl_02.md @@ -1,5 +1,5 @@ +++ -draft = true +draft = false date = 2023-08-26T06:36:18+04:00 title = "День второй" description = "Учимся писать" diff --git a/public/authors/index.html b/public/authors/index.html index da8850e..9448cd8 100644 --- a/public/authors/index.html +++ b/public/authors/index.html @@ -138,7 +138,7 @@

  • Viktar Ivanou - 3 + 4
  • diff --git a/public/authors/index.xml b/public/authors/index.xml index 398e2e7..6272c41 100644 --- a/public/authors/index.xml +++ b/public/authors/index.xml @@ -6,11 +6,11 @@ Recent content in Authors on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 Viktar Ivanou http://example.org/authors/viktar-ivanou/ - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 http://example.org/authors/viktar-ivanou/ diff --git a/public/authors/viktar-ivanou/index.html b/public/authors/viktar-ivanou/index.html index cbad5ca..e096dc1 100644 --- a/public/authors/viktar-ivanou/index.html +++ b/public/authors/viktar-ivanou/index.html @@ -131,14 +131,19 @@

      +
    • + August 26, 2023 + День второй +
    • +
    • August 24, 2023 - Учимся читать + День первый
    • August 24, 2023 - Нулевой уровень + Нулевой день
    • diff --git a/public/authors/viktar-ivanou/index.xml b/public/authors/viktar-ivanou/index.xml index 3ccc551..54f0e35 100644 --- a/public/authors/viktar-ivanou/index.xml +++ b/public/authors/viktar-ivanou/index.xml @@ -6,19 +6,30 @@ Recent content in Viktar Ivanou on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400 diff --git a/public/categories/index.html b/public/categories/index.html index d6ce1be..175eb03 100644 --- a/public/categories/index.html +++ b/public/categories/index.html @@ -149,7 +149,7 @@

    • learning - 2 + 3
    • diff --git a/public/categories/index.xml b/public/categories/index.xml index 88e0480..5a64076 100644 --- a/public/categories/index.xml +++ b/public/categories/index.xml @@ -6,11 +6,11 @@ Recent content in Categories on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 learning http://example.org/categories/learning/ - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 http://example.org/categories/learning/ diff --git a/public/categories/learning/index.html b/public/categories/learning/index.html index 37f99c5..71417e2 100644 --- a/public/categories/learning/index.html +++ b/public/categories/learning/index.html @@ -131,14 +131,19 @@

      diff --git a/public/categories/learning/index.xml b/public/categories/learning/index.xml index 7bf0084..534dd97 100644 --- a/public/categories/learning/index.xml +++ b/public/categories/learning/index.xml @@ -6,19 +6,30 @@ Recent content in learning on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400 diff --git a/public/index.xml b/public/index.xml index 8418197..78f66aa 100644 --- a/public/index.xml +++ b/public/index.xml @@ -6,19 +6,30 @@ Recent content on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400 diff --git a/public/posts/index.html b/public/posts/index.html index 70657ba..c00e6c6 100644 --- a/public/posts/index.html +++ b/public/posts/index.html @@ -134,12 +134,16 @@

      • + August 26, 2023 + День второй +
      • +
      • August 24, 2023 - Учимся читать + День первый
      • August 24, 2023 - Нулевой уровень + Нулевой день
      • August 23, 2023 diff --git a/public/posts/index.xml b/public/posts/index.xml index 7ce0664..55a3407 100644 --- a/public/posts/index.xml +++ b/public/posts/index.xml @@ -6,19 +6,30 @@ Recent content in Posts on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -> str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400 diff --git a/public/posts/invisible-message/index.html b/public/posts/invisible-message/index.html index 8bcabc2..2144d48 100644 --- a/public/posts/invisible-message/index.html +++ b/public/posts/invisible-message/index.html @@ -199,12 +199,28 @@


        Сосчитав полоски света и тени мы получаем число в двоичной системе исчисления. А нам нужно число в десятичной системе. К счастью нашего питона заранее научили переводить число из одной системы исчисления в другую. С помощью слова “int”. Нам нужно назвать число, которое мы хотим перевести, а потом назвать систему исчисления из которой нужно перевести в десятичную.

        -
        
        +
        + +
        +
        1
        +2
        +
        +
        
         int(1000001111, 2) # Вернет нам цифру 1055
        -

        Теперь мы хотим узнать какой символ записан под этим номером. Для этого нам понадобиться слово “chr”. После чего мы называем число и получаем символ под этим номером.

        -
        
        +
        +
        +

        Теперь мы хотим узнать какой символ записан под этим номером. Для этого нам понадобиться слово “chr”. После чего мы называем число и получаем символ под этим номером.

        +
        + +
        +
        1
        +2
        +
        +
        
         chr(1055) # Вернет на заглавную "П"
        -

        Все что нам осталось это повторить эти действия для каждой последовательности полосок света и тени, и наше послание готово.

        +
        +
        +

        Все что нам осталось это повторить эти действия для каждой последовательности полосок света и тени, и наше послание готово.

        Переходим к программированию :) @@ -221,7 +237,21 @@

      Есть еще 2 волшебных слова которые нам понадобятся это “ord”, что делает противоположное “chr”, и “bin” что переводит цифру в двоичную систему исчисления.

      Когда питон переводи цифру в двоичную в самом начале он добавляет 0b, чтобы мы знали что начинается новая цифра. Поэтому нам понадобилось 3 невидимых символа вместо двух. Что дает нам возможность, при переводе обратно в текст, разбить нашу строку единиц и нулей по “0b” и мы будем знать что каждый элемент списка, это отдельная цифра.

      -
      
      +
      + +
      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +
      +
      
       def to_binary(string):
           result = ""
       
      @@ -231,8 +261,28 @@ 

      result += binary return result -

      Теперь, чтобы спрятать наши числа, мы переведем их в невидимые символы

      -
      
      +
      +
      +

      Теперь, чтобы спрятать наши числа, мы переведем их в невидимые символы

      +
      + +
      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +
      +
      
       def to_whitespaces(string):
           result = ""
       
      @@ -246,7 +296,9 @@ 

      result += library[symbol] return output -

      +
      +
      +
      diff --git a/public/posts/role-playing-game/index.html b/public/posts/role-playing-game/index.html index 1461641..4be6c14 100644 --- a/public/posts/role-playing-game/index.html +++ b/public/posts/role-playing-game/index.html @@ -26,7 +26,7 @@ - + @@ -180,7 +180,23 @@

      Для начала нужно получить исходные файламы со всем необходимым. Можно склонировать репозиторий или просто скачать zip файл нажав на зеленую кнопочку “< > Code” и в открывшемся меня “Download Zip”. Пока начнем с пары простых заданий, а дальше будет видно.

      Нашей задачей будет решение разных головоломок. Каждая поможет повторить или изучить какой-то важный аспект программирования.

      Для начала нам нужно дать нашему герою имя и обучить его нескольким важным навыкам.

      -
      class Hero():
      +
      + +
      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +
      +
      class Hero():
           def __init__(self):
               self.name = ""
       
      @@ -192,9 +208,23 @@ 

      def go_to(self, path:str) -> str: ... -

      Пока что наш герой будет путешествовать по нашей файловой системе. Поэтому он должен уметь построить себе маршрут, зная места через которые ему нужно пройти. И потом пойти туда и увидеть что же там.

      +
      +
      +

      Пока что наш герой будет путешествовать по нашей файловой системе. Поэтому он должен уметь построить себе маршрут, зная места через которые ему нужно пройти. И потом пойти туда и увидеть что же там.

      Нам понадобиться os модуль. Он содержит полезные функции для работы с файловой системой, которые сильно упростят нам жизнь.

      -
      import os
      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +8
      +
      +
      import os
       # 1. join Помогает нам соеденить части пути к файлу или папке правильно.
       # возвращает строчку с уже корректо соедененным путем
       
      @@ -202,16 +232,44 @@ 

      # 2. listdir читает для нас папку и возвращает список её содержимого content = os.listdir(path) -

      Метод find_your_way должен принимать сточку или список строк и строить из него корректный путь, а потом возвращать его.

      +
      +
      +

      Метод find_your_way должен принимать сточку или список строк и строить из него корректный путь, а потом возвращать его.

      А метод go_to должен пройти по маршруту в точку назначения и “осмотреться”. Вернув список всего что он увидел.

      После того как методы будут написаны мы должны проверить, готов ли наш герой и испытаниям. Для этого нам нужно запустить файл run_hero_test.py. Если всё прошло хорошо, мы не увидим никаких ошибок:

      -
      ....
      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +
      +
      ....
       ----------------------------------------------------------------------
       Ran 4 tests in 0.000s
       
       OK
      -

      и значит можно приступать к приключениям! А если мы видим что-то вроде этого:

      -
      
      +
      +
      +

      и значит можно приступать к приключениям! А если мы видим что-то вроде этого:

      +
      + +
      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +
      +
      
       .F..
       ======================================================================
       FAIL: test_go_to (test_lvl_01.TestHero)
      @@ -222,7 +280,9 @@ 

      Ran 4 tests in 0.000s FAILED (failures=1) -

      Значит мы где-то ошиблись и нужно переделать. В этом конкретном случае не прошел проверку тест метода go_to(). Вместо списка, он вернул ноль.

      +
      +
      +

      Значит мы где-то ошиблись и нужно переделать. В этом конкретном случае не прошел проверку тест метода go_to(). Вместо списка, он вернул ноль.

      @@ -248,13 +308,19 @@

    • - Учимся читать + День второй +
    • + + + +
    • + День первый
    • - Нулевой уровень + Нулевой день
    • diff --git a/public/posts/rpg_lvl_00/index.html b/public/posts/rpg_lvl_00/index.html index 3af95e5..b50aaa8 100644 --- a/public/posts/rpg_lvl_00/index.html +++ b/public/posts/rpg_lvl_00/index.html @@ -3,7 +3,7 @@ - Нулевой уровень · Get the hell out + Нулевой день · Get the hell out @@ -17,16 +17,16 @@ - + - + - + @@ -132,7 +132,7 @@

      - Нулевой уровень + Нулевой день

      @@ -178,14 +178,39 @@

      Первый день не будет таким уж сложным если наш герой верно обучен :) Наш герой живет рядом с зАмком. Все что нужно сделать это сходить в библиотеку и посмотреть что там есть. Библиотека довольно большая, она находиться на втором этаже замка.

      Нам нужно построить маршрут, чтобы убедиться, что мы не потеряемся, и посмотреть что же есть в библиотеке.

      Открываем файл lvl_00.py в нашем редакторе и мы увидим что-то приблизительно такое:

      -
      
      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +6
      +
      +
      
       def main():
           ...
       
       if __name__ == '__main__':
           main()
      -

      Мы будем решать нашу задачу внутри main() и в конце вернем(return) результаты. Нужно не забыть пригласить нашего героя:

      -
      
      +
      +
      +

      Мы будем решать нашу задачу внутри main() и в конце вернем(return) результаты. Нужно не забыть пригласить нашего героя:

      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +8
      +9
      +
      +
      
       from hero import Hero
       
       def main():
      @@ -194,7 +219,9 @@ 

      ... return "Результаты наших трудов" -

      Чтобы убедиться все ли сделано правильно, нужно запустить run_lvl_00_test.py.

      +
      +
      +

      Чтобы убедиться все ли сделано правильно, нужно запустить run_lvl_00_test.py.

      @@ -220,7 +247,13 @@

    • - Учимся читать + День второй +
    • + + + +
    • + День первый
    • diff --git a/public/posts/rpg_lvl_01/index.html b/public/posts/rpg_lvl_01/index.html index 4071dcd..e606bae 100644 --- a/public/posts/rpg_lvl_01/index.html +++ b/public/posts/rpg_lvl_01/index.html @@ -3,7 +3,7 @@ - Учимся читать · Get the hell out + День первый · Get the hell out @@ -17,16 +17,16 @@ - + - + - + @@ -132,7 +132,7 @@

      - Учимся читать + День первый

      @@ -172,9 +172,9 @@

      -

      - День второй - +

      + Учимся читать + Link to heading @@ -187,13 +187,30 @@

      Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое

      -
      def read_the_book(file_path:str) -> str:
      +
      + +
      +
      1
      +2
      +
      +
      def read_the_book(file_path:str) -> str:
           ...
      -

      Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. Взять её, прочитать и потом положить на место, чтобы если она понадобиться кому-то еще, книга была доступна.

      -
      
      +
      +
      +

      Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. Взять её, прочитать и потом положить на место, чтобы если она понадобиться кому-то еще, книга была доступна.

      +
      + +
      +
      1
      +2
      +3
      +
      +
      
       with open("путь/до/книги/книга.txt") as file:
           content = file.read()
      -

      with - это волшебное слово, которое помогает нам все сделать правильно, и ничего не забыть. Используя with книга сама вернется на место, как только мы закончим с ней работать.

      +
      +
      +

      with - это волшебное слово, которое помогает нам все сделать правильно, и ничего не забыть. Используя with книга сама вернется на место, как только мы закончим с ней работать.

      Было бы неплохо если бы это работало и в повседневной жизни. Недавно мы месяцев 5 - 6 ждали пока книга, которую хотелось прочитать вернется в библиотеку. А похоже что человек который её взял, просто забыл вернуть на место…

      @@ -209,52 +226,124 @@

      Библиотека большая, и в ней много разных книг. Мы хотим прочитать книгу с самым длинным названием.

      Есть много способов найти файл с самым длинным названием. Мы воспользуемся сортировкой.

      Для начала нам нужен список книг. Мы уже получали список книг, когда были в библиотеке в прошлый раз. Поэтому я не буду описывать, как это сделать. В библиотеке находиться более 5000 книг. Поэтому наш список выходит довольно длинным. Каждый список в Python можно отсортировать, вызвав метод sort()

      -
      
      +
      + +
      +
      1
      +2
      +3
      +4
      +
      +
      
       list_of_books = [...] # Притворимся что это наш список книг
       
       list_of_books.sort()
      -

      Без каких либо параметров список отсортирует в алфавитном порядке. Это здорово, но не то что нам нужно. Мы хотим отсортировать по длине названия. К счастью мы можем указать sort() функции, что нужно делать. Как ключ, к сортировке мы передаем имя функции(без кавычек). Результаты выполнения этой функции и будут использованы для сортировки.

      -
      def way_to_sort(x):
      +
      +
      +

      Без каких либо параметров список отсортирует в алфавитном порядке. Это здорово, но не то что нам нужно. Мы хотим отсортировать по длине названия. К счастью мы можем указать sort() функции, что нужно делать. Как ключ, к сортировке мы передаем имя функции(без кавычек). Результаты выполнения этой функции и будут использованы для сортировки.

      +
      + +
      +
      1
      +2
      +3
      +4
      +
      +
      def way_to_sort(x):
           return len(x)
       
       list_of_books.sort(key = way_to_sort)
      -

      Если список книг:

      -
      list_of_books = [
      +
      +
      +

      Если список книг:

      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +6
      +
      +
      list_of_books = [
                       Книгга,
                       Книггга,
                       Книга,
                       Книгггга
       ]
      -

      То функция sort() сначала применит way_to_sort к каждому элементу в списке:

      -
      
      +
      +
      +

      То функция sort() сначала применит way_to_sort к каждому элементу в списке:

      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +
      +
      
       [
       way_to_sort( Книгга ), # Вернет 6
       way_to_sort( Книггга ), # Вернет 7
       way_to_sort( Книга ), # Вернет 5
       way_to_sort( Книгггга ) # Вернет 8
       ]
      -

      И отсортирует по возрастанию, ориентируясь на результаты работы way_to_sort()

      -
      
      +
      +
      +

      И отсортирует по возрастанию, ориентируясь на результаты работы way_to_sort()

      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +
      +
      
       [
       Книга, # 5 букв
       Книгга, # 6 букв
       Книггга, # 7 букв
       Книгггга # 8 букв
       ]
      -

      +

      +
      +

      ВАЖНО!* метод sort() не возвращает ничего. А изменяет тот список с которым мы работаем поэтому ТАК делать НЕ нужно: Link to heading

      -
      sorted_list = list_of_books.sort() # Не правильно!
      -

      После того как мы вызвали метод sort() список уже будет отсортирован и с ним можно продолжать работать.

      +
      + +
      +
      1
      +
      +
      sorted_list = list_of_books.sort() # Не правильно!
      +
      +
      +

      После того как мы вызвали метод sort() список уже будет отсортирован и с ним можно продолжать работать.

      Звучит немного спутанно, но так уж оно работает, ну или почти так :)


      Все что нам остается это взять последний элемент списка. Он и будет самым длинным названием.

      -
      title = list_of_books.pop()
      -

      Останется только вывести текст на экран, если хочется почитать сказку. И не забыть return текст, чтобы пройти тест.

      +
      + +
      +
      1
      +
      +
      title = list_of_books.pop()
      +
      +
      +

      Останется только вывести текст на экран, если хочется почитать сказку. И не забыть return текст, чтобы пройти тест.

      Но помни что title - это только название, чтобы открыть файл, нужно не забыть указать также и путь к файлу!

      Не забудь в конце запустить run_lvl_01_test.py

      @@ -281,10 +370,16 @@

      +
    • + День второй +
    • + + +
    • - Нулевой уровень + Нулевой день
    • diff --git a/public/posts/rpg_lvl_02/index.html b/public/posts/rpg_lvl_02/index.html new file mode 100644 index 0000000..8afb76e --- /dev/null +++ b/public/posts/rpg_lvl_02/index.html @@ -0,0 +1,437 @@ + + + + + + День второй · Get the hell out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      +
      +
      +
      +

      + + День второй + +

      +
      + +
      + +
      + +

      + Учимся писать + + + Link to heading + +

      +

      Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл.

      +

      Добавим новую способность нашему герою:

      +
      + +
      +
      1
      +2
      +3
      +
      +
      class Hero():
      +    def write(self, text):
      +        ...
      +
      +
      +

      Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. Итак все что нам нужно это

      +
        +
      1. Открыть блокнот
      2. +
      3. Записать наш текс
      4. +
      5. Убрать блокнот на место
      6. +
      +

      Так же как и с чтением, мы воспользуемся конструкцией with чтобы убедиться что мы ничего не забыли.

      +
      + +
      +
      1
      +2
      +3
      +4
      +
      +
      class Hero():
      +    def write(self, text):
      +        with open("notebook", "a") as file:
      +            file.write(text)
      +
      +
      +

      Итак, мы открываем файл c именем notebook, если он не существует, то будет создан автоматически. Второй аргумен в нашей open() функции “a”, что значит “append” или добавить(в конец файла). Это значит что каждый раз когда мы будем записывать в файл, То его содержимое не будет стираться, но дополняться.

      +

      Остался последний небольшой штрих в нашей базовом версии. Было бы очень здорово, если бы каждая новая запись начиналась с новой строки. Для этого, перед тем как сохраниться запись в файл, мы добавим к тексту символ переноса строки "\n"

      +
      + +
      +
      1
      +2
      +3
      +4
      +5
      +
      +
      class Hero():
      +    def write(self, text):
      +        text += "\n"
      +        with open("notebook", "a") as file:
      +            file.write(text)
      +
      +
      +

      Но что если мы хотим сделать запись не в нашей записной книжке, а скажем в книге из библиотеки(да, не хорошо я знаю…) для этого мы добавим дополнительный, не обязательный параметр нашей функции. Назавем его path_to_file.

      +
      + +
      +
      1
      +2
      +3
      +
      +
      class Hero():
      +    def write(self, text, path_to_file = None):
      +        ...
      +
      +
      +

      Теперь нам нужно немного изменить наш метод чтобы:

      +
        +
      • Если мы указали путь к файлу, мы будем делать запись в этот файл
      • +
      • Если path_to_file не указан, записываем в блокнот
      • +
      +
      + +
      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +
      +
      class Hero():
      +    def write(self, text, path_to_file = None):
      +        text += "\n"
      +
      +        if not path_to_file:
      +            path_to_file = "notebook"
      +
      +
      +        with open(path_to_file, "a") as file:
      +            return file.write(text)
      +
      +
      +

      И в конце мы возвращаем количество символов которые мы записали в файл, вдруг пригодиться :)

      +

      + Задание + + + Link to heading + +

      +

      Записать слова Лао Дзу в книгу из библиотеки с самым коротким названием.

      +
      +

      “Being deeply loved by someone gives you strength, while loving someone deeply gives you courage. ” — Lao Tzu

      +
      +

      Вчера мы рассматривали как прочитать книгу с самым длинным названием. Сегодняшнее задание схожее, только вместо чтения, мы будем записывать…

      +

      Удачи!

      + +
      + + +
      + + +
      + + + + +

      + See also in magic-world + + + Link to heading + +

      + + + +
      + + +
      + + + + + +
      +
      + + +
      + +
      + +
      +
      + © + + 2019 - + + 2023 + Viktar Ivanou + · + + Powered by Hugo & Coder. + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/series/index.html b/public/series/index.html index 35ef7d4..46c55e0 100644 --- a/public/series/index.html +++ b/public/series/index.html @@ -138,7 +138,7 @@

    • magic-world - 3 + 4
    • diff --git a/public/series/index.xml b/public/series/index.xml index 76ce262..e41ef3a 100644 --- a/public/series/index.xml +++ b/public/series/index.xml @@ -6,11 +6,11 @@ Recent content in Series on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 magic-world http://example.org/series/magic-world/ - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 http://example.org/series/magic-world/ diff --git a/public/series/magic-world/index.html b/public/series/magic-world/index.html index 2262a2f..9fd553a 100644 --- a/public/series/magic-world/index.html +++ b/public/series/magic-world/index.html @@ -131,14 +131,19 @@

        +
      • + August 26, 2023 + День второй +
      • +
      • August 24, 2023 - Учимся читать + День первый
      • August 24, 2023 - Нулевой уровень + Нулевой день
      • diff --git a/public/series/magic-world/index.xml b/public/series/magic-world/index.xml index 32bb393..41c2982 100644 --- a/public/series/magic-world/index.xml +++ b/public/series/magic-world/index.xml @@ -6,19 +6,30 @@ Recent content in magic-world on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -&gt; str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -&gt; str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400 diff --git a/public/sitemap.xml b/public/sitemap.xml index 1a46dff..9c5f198 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -3,37 +3,40 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> http://example.org/authors/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/categories/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/categories/learning/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/series/magic-world/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/posts/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/tags/python/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/tags/rpg/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/series/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/tags/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 http://example.org/authors/viktar-ivanou/ - 2023-08-24T14:05:25+04:00 + 2023-08-26T06:36:18+04:00 + + http://example.org/posts/rpg_lvl_02/ + 2023-08-26T06:36:18+04:00 http://example.org/posts/rpg_lvl_01/ 2023-08-24T14:05:25+04:00 diff --git a/public/tags/index.html b/public/tags/index.html index a4eb8c0..2478162 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -138,7 +138,7 @@

      • python - 3 + 4
      • @@ -149,7 +149,7 @@

      • rpg - 2 + 3
      • diff --git a/public/tags/index.xml b/public/tags/index.xml index f056505..ea61103 100644 --- a/public/tags/index.xml +++ b/public/tags/index.xml @@ -6,11 +6,11 @@ Recent content in Tags on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 python http://example.org/tags/python/ - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 http://example.org/tags/python/ @@ -19,7 +19,7 @@ rpg http://example.org/tags/rpg/ - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 http://example.org/tags/rpg/ diff --git a/public/tags/python/index.html b/public/tags/python/index.html index c3f163f..ea4abef 100644 --- a/public/tags/python/index.html +++ b/public/tags/python/index.html @@ -131,14 +131,19 @@

          +
        • + August 26, 2023 + День второй +
        • +
        • August 24, 2023 - Учимся читать + День первый
        • August 24, 2023 - Нулевой уровень + Нулевой день
        • diff --git a/public/tags/python/index.xml b/public/tags/python/index.xml index b2d9afd..2caa14f 100644 --- a/public/tags/python/index.xml +++ b/public/tags/python/index.xml @@ -6,19 +6,30 @@ Recent content in python on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -&gt; str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -&gt; str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400 diff --git a/public/tags/rpg/index.html b/public/tags/rpg/index.html index 0126a94..94c4df8 100644 --- a/public/tags/rpg/index.html +++ b/public/tags/rpg/index.html @@ -131,14 +131,19 @@

          diff --git a/public/tags/rpg/index.xml b/public/tags/rpg/index.xml index d7ecc10..502b7c3 100644 --- a/public/tags/rpg/index.xml +++ b/public/tags/rpg/index.xml @@ -6,19 +6,30 @@ Recent content in rpg on Get the hell out Hugo -- gohugo.io ru-ru - Thu, 24 Aug 2023 14:05:25 +0400 + Sat, 26 Aug 2023 06:36:18 +0400 - Учимся читать + День второй + http://example.org/posts/rpg_lvl_02/ + Sat, 26 Aug 2023 06:36:18 +0400 + + http://example.org/posts/rpg_lvl_02/ + Учимся писать Link to heading Хорошо, в прошлый раз, мы научили нашего героя читать. Пришло вермя научить его еще и писать. Ведь это один из основных навыков, без использования которого ни проходит ни дня. Начнем с простого. Записать строку в файл. +Добавим новую способность нашему герою: +1 2 3 class Hero(): def write(self, text): ... Пока что предствавим что у нашего героя есть блокнот(notebook), куда он может записывать все что ему вздумается. + + + + День первый http://example.org/posts/rpg_lvl_01/ Thu, 24 Aug 2023 14:05:25 +0400 http://example.org/posts/rpg_lvl_01/ - День второй Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое -def read_the_book(file_path:str) -&gt; str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. + Учимся читать Link to heading Как прочитать файл Link to heading Сегодня нам предстоит вернуться в библиотеку дабы прочиться книгу. Но на данный момент наш герой не умеет читать. И наша задача его научить. Для этого мы создадим новы метод read_the_book который будет принимать путь к книге как параметр и возвращать её содержимое +1 2 def read_the_book(file_path:str) -&gt; str: ... Теперь немного о чтении. Чтобы прочитать книгу, нам нужно точно знать где она лежит. - Нулевой уровень + Нулевой день http://example.org/posts/rpg_lvl_00/ Thu, 24 Aug 2023 07:18:10 +0400