Что ж, посмотрим, как работать с третьим аргументом в срезах на примере строк, на примере использования его в циклах, и в конце попробуем применить это на практике, расшифровав строчку, закодированную шифром Бэкона. Предположим, у нас есть русский алфавит, и мы могли бы попросить компьютер вывести каждую вторую букву нашего алфавита. В этом случае мы можем попросить компьютер взять срез строки алфавита от начала до конца и брать каждый второй символ. Также мы можем опустить два первых параметра, и вместо этой пустоты компьютер прочитает «начни сначала, закончи в конце». Также мы с помощью шага можем управлять направлением работы нашего среза. Например, мы можем попросить вывести весь алфавит от начала до конца в обратном порядке. И мы можем даже попросить компьютер сделать какой-то сложный срез, например, мы можем попросить вывести в обратном порядке каждую вторую букву из первых десяти букв алфавита. [ЗВУК] Да, то есть мы говорим: «Начать с десятой буквы, идти до начала, назад, каждую вторую букву». Кроме того, что срезы и управление шагом в срезах можно применять в строках, мы можем применять это и к спискам с кортежами. Например, если у нас есть кортеж из студентов, мы можем попросить компьютер вывести имя каждого второго студента. Мы можем работать со срезами сразу внутри циклов. Например, если мы хотим из нашего кортежа студентов вывести на экран не все, то мы можем перебрать все имена в цикле и сразу сказать, что: «Выведи, пожалуйста, начиная со второго имени, и остановись перед четвертым». Можем попросить компьютер перебрать второе и третье имя, сохранить имя в переменную name и вывести ее на экран либо сделать с ней что-то, что нам нужно, чтобы компьютер с ней сделал. Это равносильно тому, что мы уже делали, когда перебирали списки с помощью конструкции for i in range. Мы могли бы написать то же самое — «перебери, пожалуйста, индексы первый и второй и обратись к элементам с этими индексами». Точно так же мы можем и применять в циклах длину шага. Например, мы можем попросить компьютер вывести каждого второго студента из списка. Для этого мы просим компьютер перебрать срез кортежа студентов, где оставлено каждое второе имя, и сохранить это имя в переменную name, и потом что-нибудь с этим именем сделать, например, вывести на экран. Также мы можем использовать срезы при работе с функцией map. Например, мы хотим, чтобы часть имен студентов, каждое второе имя, получить копию каждого второго имени, написанного большими буквами. В этом случае мы можем написать новый кортеж. Назовем его STUDENTS большими буквами и скажем, что в переменную STUDENTS будет сохранен кортеж, к которому будет приведен результат работы функции map, когда мы ко всем элементам применим метод строк upper, которые превращает все буквы в большие. И применять мы их будем к срезу из кортежа имен студентов, где мы просим компьютер взять каждое второе имя. И мы можем теперь напечатать эти два кортежа. [ЗВУК] [ЗВУК] [ЗВУК] [ЗВУК] [ЗВУК] Несмотря на то, что компьютер прекрасно отличает кортеж, написанный маленькими буквами, от кортежа, написанного большими буквами, так лучше никогда не делать. [МУЗЫКА]