Программирование как магия. Передаете машине заклинания-команды, а она делает все, что вы захотите.

Хотите, чтобы горшок с цветком поливал себя сам? Собираете робототехнический набор Arduino и пишите для него простую программу. Система автополива готова. Понадобится только иногда доливать воду, но и этому вы можете научить своего робота. Заклинание потребуется усложнить. Если вы уже начали изучать программирование на «Питоне», то знаете пока не так много «заклинаний».

В этой статье вы узнаете о таком инструменте Python, как списки (lists). С ними вы сможете переливать информацию как маг переливает эликсиры, чтобы получить какое-нибудь колдовское зелье. 

Язык Python для детей: объясняем что такое списки (lists)

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

wizard_list = 'Accio - приносит потеряные предметы, Alohomora - открывает двери, Avada Kadavra - вызывает мгновенную смерть, Brackium Emendo - лечит сломанные кости'
print(wizard_list)

А вот, что мы получили в консоли разработчика, после запуска этого кода:

Но у нас есть еще одна возможность: мы можем составить список Python, то есть создать для решения той же задачи такую магическую конструкцию этого языка, как list. С ним мы потом сможем производить самые разные манипуляции. 

wizard_list = ['Accio - приносит потеряные предметы', 'Alohomora - открывает двери', 'Avada Kadavra - вызывает мгновенную смерть', 'Brackium Emendo - лечит сломанные кости']
print(wizard_list)

Вы могли заметить, что для создания списка требуется напечатать чуть больше символов, но оно того стоит. Списки позволяют управлять данными гораздо свободнее. Например, вы сможете очень просто получить и, к примеру, распечатать в консоль третий элемент списка. Кстати, это распространенная задача по Python для детей на курсах программирования. Постарайся запомнить, как это делается. Для ее решения нужно указать номер элемента в квадратных скобках рядом с названием переменной, которой ты назвал свой список заклинаний. Номера, элементов, которые закрепляются за ними при создании списка автоматически, без нашего участия, называются идентификаторами и мы можем ими пользоваться, если эти номера помогают решить ту или иную задачу.

wizard_list = ['Accio - приносит потеряные предметы', 'Alohomora - открывает двери', 'Avada Kadavra - вызывает мгновенную смерть', 'Brackium Emendo - лечит сломанные кости']
print(wizard_list[2])

“Ага!” – скажете вы. “Это не второй, а третий элемент!”

Да, но в списках нумерация начинается с «0». Не спрашивайте, почему так повелось. Эта традиция восходит к темной магии языка программирования «С», на котором написан сам Python. Получается, что первый элемент имеет идентификатор «0», второй – «1» и так далее.

Также со списками мы можем гораздо легче изменять нужный нам элемент, чем в случае, если набор данных представлен строкой. Представьте, что наш список заклинаний – реестр для начинающих магов из компьютера библиотеки Хогвартса. Так же, как вы проходите курс Python для детей с нуля, маги детьми познают азы колдовства! Если речь о начальной подготовке, то заклинание, вызывающее мгновенную смерть, будет в нем лишним. Добавим туда что-нибудь менее ужасное.

wizard_list = ['Accio - приносит потеряные предметы', 'Alohomora - открывает двери', 'Avada Kadavra - вызывает мгновенную смерть', 'Brackium Emendo - лечит сломанные кости']
wizard_list[2] = 'Riddikulus - специальное заклинание для борьбы со зверем боггартом из мира Хогвартса'
print(wizard_list)

Видите? Элемент с идентификатором «2» был заменен на новый. Это еще далеко не все, что может список Python. Добавив в имени списка конструкцию вида [0:2] мы получим выборку из списка с нулевого до второго элемента. Вот, как это работает:

wizard_list = ['Accio - приносит потеряные предметы', 'Alohomora - открывает двери', 'Avada Kadavra - вызывает мгновенную смерть', 'Brackium Emendo - лечит сломанные кости'] 
print(wizard_list[0:3])

Написать [0:3] равносильно тому, как сказать: «Выдай мне все элементы списка с нулевого до третьего». В списках вы можете хранить данные любых типов, доступных Python. Это могут быть строки, могут быть числа, а можно положить в список и то, и другое.

wizard_list = ['Accio - приносит потеряные предметы', 1000555,
'Alohomora - открывает двери', 555,
'Avada Kadavra - вызывает мгновенную смерть',
'Brackium Emendo - лечит сломанные кости'] 
print(wizard_list)

Наконец, крайне полезная для волшебства опция: хранение внутри списка других списков.

wizard_list = [[555, 1000555, 345], ['Accio - приносит потеряные предметы',
'Alohomora - открывает двери',
'Avada Kadavra - вызывает мгновенную смерть',
'Brackium Emendo - лечит сломанные кости']]
print(wizard_list)

К списку можно добавить новые элементы. Для этого используется специальная функция «append». Возможно, ты еще не знаком с понятием «функция»? Это блок кода, который делает что-нибудь. В данном случае «append» добавляет новое заклинание в конец списка wizard_list.

wizard_list = ['Accio - приносит потеряные предметы',
'Alohomora - открывает двери',
'Avada Kadavra - вызывает мгновенную смерть',
'Brackium Emendo - лечит сломанные кости']
wizard_list.append('Expecto patronum - накладывает защитные чары')
print(wizard_list)

Мы можем удалить элементы из списка с помощью команды «del». Это сокращение от «delete» – удалить. И в этом нам снова поможет идентификатор. del[4] и только что добавленного с помощью «append» функции как не бывало. Со списками вы можете делать еще много чего. Вы можете сложить два списка. «general_list = wizard_list + creature_list». В этом случае получите один большой список, в котором способности магических существ добавились после всех элементов списка мага. Вы также можете умножить список. wizard_list*5, приведет к тому, что с конца исходного списка прибавятся четыре его копии. Иными словами, у вас в списке будет пять заклинаний «Emendo», только с разными идентификаторами. Другие арифметические действия со списками недоступны. При попытке прибавить к списку число или разделить на число Python вернет ошибку.

Язык Python для детей: кортежи (Tuples)

Сложность операций со списками Python в том, что данные процессе метаморфоз легко изменить или исказить. На помощь приходят кортежи. Кортеж нельзя изменить. Магу бывает важно убедиться, что в определенном месте он найдет только то, что ожидает, а не «корень мандрагоры». В отличие от списков, кортежи вы создадите с помощью круглых скобок. В него тоже можно записать данные любых типов. Храни в кортежах данные, которые вы не собираетесь менять, благодаря этому вы экономите «манну» – память компьютера. В примере ниже создается кортеж и делается попытка изменить один из его элементов. Интерпретатор Python закономерно отказывает в этом.  

numbers_tuple = (345,
985656,
4566,
7889)
numbers_tuple[0] = 10
print(numbers_tuple)

Язык Python для детей: словари

Словари в Python полезны, когда необходимо хранить пары ключ – значение. Кстати, по-английски этот тип может называться по-разному: map, dict, dictionary, во всех трех случаях имеется в виду одно и то же. Если у сходных предметов, которые перечислены в словаре, есть одинаковый ключ, то по этому признаку их легко в коде выделить и обработать, даже если они перемешаны с самыми разными другими данными. Не счесть ситуаций, когда наличие ключа может быть очень полезно. Предположим, в компьютере библиотеки Хогвартса мы храним данные с помощью словаря. Давайте из всей массы записанных предметов быстро найдем Кубок «Хельги Хаффлпафф». 

marvelous_things = {'diadem': "'Rowena ravenclaw's diadem'",
'sword': 'sword of Gryfindor',
'locket': "'salazar slytherin's locket'",
'cup': "'Helga Hufflepuff's cup'"}
print(marvelous_things['cup'])

Видите, как полезен список?

Язык Python для детей: множества

Множества в Python – еще один полезный инструмент. От всех прочих он отличается отсутствием идентификаторов. Элементы в него записываются без указания на их порядок. На практике это очень полезное свойство, которое сейчас, скорее всего, вас не впечатляет, но о котором вы обязательно вспомните, столкнувшись с конкретной задачей. С отсутствием «номеров» связан целый ряд полезных свойств. Например, в множества записываются только уникальные элементы, поэтому множества хороши для быстрого удаления дубликатов в определенном наборе данных. Код ниже иллюстрирует отсутствие у множеств номеров, мы обращаемся к элементу по идентификатору и Python возвращает ошибку.

name_of_malefactor = {'L', 'o', 'r', 'd', 'V', 'o', 'l', 'd', 'e', 'm', 'o', 'r', 't'}
print(name_of_malefactor[5])

Язык Python для детей: коллекции

В материалах по Python часто можно найти термин «коллекции». Это общее обозначение для всех перечисленных выше инструментов. Коллекция представляет собой программный объект, хранящий набор элементов одного или нескольких типов. Строка в «Питоне» тоже относится к коллекциям.

Python для детей: изучаем механику волшебства

Попробуйте запомнить как можно больше приемов работы с разными типами коллекций. Как известно, «суха теория», а «древо жизни зеленеет». Читая посеревшие от времени магические книги по Python в высоком каменном читальном зале, вы можете в какой-то момент заскучать. Но вы скажете себе спасибо за то, что не бросили скучную теорию, когда сможете «вызвать дракона». Если сосредоточиться не получается, попробуйте придумать, как вас применить то, о чем вы читаете. Что бы вам интересно было наколдовать?


Материал подготовлен и опубликован школой программирования для детей «Пиксель».

Комментарии (4)


  1. kleinerapril
    00.00.0000 00:00
    -3

    Спасибо, интересная и полезная статья


    1. Vadim_Bordik Автор
      00.00.0000 00:00
      -4

      Добрый день! Благодарим за высокую оценку. Можете ознакомиться со следующей не менее увлекательной статьей о детских летних лагерях: https://habr.com/ru/post/720580/


  1. JdocJ
    00.00.0000 00:00
    +1

    Всегда интересовало пользуются ли вообще программисты списками, кортежами. Почему то мне я не могу сходу придумать где их могут использовать разработчики какой нибудь условно "яндекс еды"


    1. Valentine5
      00.00.0000 00:00
      +1

      Да даже в выводе меню Яндекс едыполно циклов, чтобы всё наименования с картинками вывести, нужно из перебрать по одному. Но этт Java script, а Пайтон так же работает, когда надо данные изменить, обновить массово, просто он на бэке