[{"data":1,"prerenderedAt":1886},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fpython\u002Fst1":386,"\u002Fblog\u002Fpython\u002Fst1-surround":1882},[4],{"title":5,"path":6,"stem":7,"children":8,"page":114},"Blog","\u002Fblog","blog",[9,115,184,329],{"title":10,"path":11,"stem":12,"children":13,"page":114},"Ege","\u002Fblog\u002Fege","blog\u002Fege",[14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110],{"title":15,"path":16,"stem":17},"ЕГЭ Задание 1","\u002Fblog\u002Fege\u002Ftask1","blog\u002Fege\u002Ftask1",{"title":19,"path":20,"stem":21},"ЕГЭ Задание 10","\u002Fblog\u002Fege\u002Ftask10","blog\u002Fege\u002Ftask10",{"title":23,"path":24,"stem":25},"ЕГЭ Задание 11","\u002Fblog\u002Fege\u002Ftask11","blog\u002Fege\u002Ftask11",{"title":27,"path":28,"stem":29},"ЕГЭ Задание 12","\u002Fblog\u002Fege\u002Ftask12","blog\u002Fege\u002Ftask12",{"title":31,"path":32,"stem":33},"ЕГЭ Задание 13","\u002Fblog\u002Fege\u002Ftask13","blog\u002Fege\u002Ftask13",{"title":35,"path":36,"stem":37},"ЕГЭ Задание 14","\u002Fblog\u002Fege\u002Ftask14","blog\u002Fege\u002Ftask14",{"title":39,"path":40,"stem":41},"ЕГЭ Задание 15","\u002Fblog\u002Fege\u002Ftask15","blog\u002Fege\u002Ftask15",{"title":43,"path":44,"stem":45},"ЕГЭ Задание 16","\u002Fblog\u002Fege\u002Ftask16","blog\u002Fege\u002Ftask16",{"title":47,"path":48,"stem":49},"ЕГЭ Задание 17","\u002Fblog\u002Fege\u002Ftask17","blog\u002Fege\u002Ftask17",{"title":51,"path":52,"stem":53},"ЕГЭ Задание 18","\u002Fblog\u002Fege\u002Ftask18","blog\u002Fege\u002Ftask18",{"title":55,"path":56,"stem":57},"ЕГЭ Задание 19, 20, 21","\u002Fblog\u002Fege\u002Ftask19_20_21","blog\u002Fege\u002Ftask19_20_21",{"title":59,"path":60,"stem":61},"ЕГЭ Задание 2","\u002Fblog\u002Fege\u002Ftask2","blog\u002Fege\u002Ftask2",{"title":63,"path":64,"stem":65},"ЕГЭ Задание 22","\u002Fblog\u002Fege\u002Ftask22","blog\u002Fege\u002Ftask22",{"title":67,"path":68,"stem":69},"ЕГЭ Задание 23","\u002Fblog\u002Fege\u002Ftask23","blog\u002Fege\u002Ftask23",{"title":71,"path":72,"stem":73},"ЕГЭ Задание 24","\u002Fblog\u002Fege\u002Ftask24","blog\u002Fege\u002Ftask24",{"title":75,"path":76,"stem":77},"ЕГЭ Задание 25","\u002Fblog\u002Fege\u002Ftask25","blog\u002Fege\u002Ftask25",{"title":79,"path":80,"stem":81},"ЕГЭ Задание 26","\u002Fblog\u002Fege\u002Ftask26","blog\u002Fege\u002Ftask26",{"title":83,"path":84,"stem":85},"ЕГЭ Задание 27","\u002Fblog\u002Fege\u002Ftask27","blog\u002Fege\u002Ftask27",{"title":87,"path":88,"stem":89},"ЕГЭ Задание 3","\u002Fblog\u002Fege\u002Ftask3","blog\u002Fege\u002Ftask3",{"title":91,"path":92,"stem":93},"ЕГЭ Задание 4","\u002Fblog\u002Fege\u002Ftask4","blog\u002Fege\u002Ftask4",{"title":95,"path":96,"stem":97},"ЕГЭ Задание 5","\u002Fblog\u002Fege\u002Ftask5","blog\u002Fege\u002Ftask5",{"title":99,"path":100,"stem":101},"ЕГЭ Задание 6","\u002Fblog\u002Fege\u002Ftask6","blog\u002Fege\u002Ftask6",{"title":103,"path":104,"stem":105},"ЕГЭ Задание 7","\u002Fblog\u002Fege\u002Ftask7","blog\u002Fege\u002Ftask7",{"title":107,"path":108,"stem":109},"ЕГЭ Задание 8","\u002Fblog\u002Fege\u002Ftask8","blog\u002Fege\u002Ftask8",{"title":111,"path":112,"stem":113},"ЕГЭ Задание 9","\u002Fblog\u002Fege\u002Ftask9","blog\u002Fege\u002Ftask9",false,{"title":116,"path":117,"stem":118,"children":119,"page":114},"Oge","\u002Fblog\u002Foge","blog\u002Foge",[120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180],{"title":121,"path":122,"stem":123},"ОГЭ Задание 1","\u002Fblog\u002Foge\u002Ftask1","blog\u002Foge\u002Ftask1",{"title":125,"path":126,"stem":127},"ОГЭ Задание 10","\u002Fblog\u002Foge\u002Ftask10","blog\u002Foge\u002Ftask10",{"title":129,"path":130,"stem":131},"ОГЭ Задание 11","\u002Fblog\u002Foge\u002Ftask11","blog\u002Foge\u002Ftask11",{"title":133,"path":134,"stem":135},"ОГЭ Задание 12","\u002Fblog\u002Foge\u002Ftask12","blog\u002Foge\u002Ftask12",{"title":137,"path":138,"stem":139},"ОГЭ Задание 13","\u002Fblog\u002Foge\u002Ftask13","blog\u002Foge\u002Ftask13",{"title":141,"path":142,"stem":143},"ОГЭ Задание 14","\u002Fblog\u002Foge\u002Ftask14","blog\u002Foge\u002Ftask14",{"title":145,"path":146,"stem":147},"ОГЭ Задание 15","\u002Fblog\u002Foge\u002Ftask15","blog\u002Foge\u002Ftask15",{"title":149,"path":150,"stem":151},"ОГЭ Задание 16","\u002Fblog\u002Foge\u002Ftask16","blog\u002Foge\u002Ftask16",{"title":153,"path":154,"stem":155},"ОГЭ Задание 2","\u002Fblog\u002Foge\u002Ftask2","blog\u002Foge\u002Ftask2",{"title":157,"path":158,"stem":159},"ОГЭ Задание 3","\u002Fblog\u002Foge\u002Ftask3","blog\u002Foge\u002Ftask3",{"title":161,"path":162,"stem":163},"ОГЭ Задание 4","\u002Fblog\u002Foge\u002Ftask4","blog\u002Foge\u002Ftask4",{"title":165,"path":166,"stem":167},"ОГЭ Задание 5","\u002Fblog\u002Foge\u002Ftask5","blog\u002Foge\u002Ftask5",{"title":169,"path":170,"stem":171},"ОГЭ Задание 6","\u002Fblog\u002Foge\u002Ftask6","blog\u002Foge\u002Ftask6",{"title":173,"path":174,"stem":175},"ОГЭ Задание 7","\u002Fblog\u002Foge\u002Ftask7","blog\u002Foge\u002Ftask7",{"title":177,"path":178,"stem":179},"ОГЭ Задание 8","\u002Fblog\u002Foge\u002Ftask8","blog\u002Foge\u002Ftask8",{"title":181,"path":182,"stem":183},"ОГЭ Задание 9","\u002Fblog\u002Foge\u002Ftask9","blog\u002Foge\u002Ftask9",{"title":185,"path":186,"stem":187,"children":188,"page":114},"Python","\u002Fblog\u002Fpython","blog\u002Fpython",[189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321,325],{"title":190,"path":191,"stem":192},"Знакомство с синтаксисом","\u002Fblog\u002Fpython\u002Fst1","blog\u002Fpython\u002Fst1",{"title":194,"path":195,"stem":196},"Отладка","\u002Fblog\u002Fpython\u002Fst10","blog\u002Fpython\u002Fst10",{"title":198,"path":199,"stem":200},"Модули и пакеты","\u002Fblog\u002Fpython\u002Fst11","blog\u002Fpython\u002Fst11",{"title":202,"path":203,"stem":204},"Кортежи","\u002Fblog\u002Fpython\u002Fst12","blog\u002Fpython\u002Fst12",{"title":206,"path":207,"stem":208},"Знакомство со списками","\u002Fblog\u002Fpython\u002Fst13","blog\u002Fpython\u002Fst13",{"title":210,"path":211,"stem":212},"Списки и циклы","\u002Fblog\u002Fpython\u002Fst14","blog\u002Fpython\u002Fst14",{"title":214,"path":215,"stem":216},"Использование списков ч.1","\u002Fblog\u002Fpython\u002Fst15","blog\u002Fpython\u002Fst15",{"title":218,"path":219,"stem":220},"Использование списков ч.2","\u002Fblog\u002Fpython\u002Fst16","blog\u002Fpython\u002Fst16",{"title":222,"path":223,"stem":224},"Использование списков ч.3","\u002Fblog\u002Fpython\u002Fst17","blog\u002Fpython\u002Fst17",{"title":226,"path":227,"stem":228},"Словари","\u002Fblog\u002Fpython\u002Fst18","blog\u002Fpython\u002Fst18",{"title":230,"path":231,"stem":232},"Множества","\u002Fblog\u002Fpython\u002Fst19","blog\u002Fpython\u002Fst19",{"title":234,"path":235,"stem":236},"Переменные","\u002Fblog\u002Fpython\u002Fst2","blog\u002Fpython\u002Fst2",{"title":238,"path":239,"stem":240},"Хеш-таблицы","\u002Fblog\u002Fpython\u002Fst20","blog\u002Fpython\u002Fst20",{"title":242,"path":243,"stem":244},"Решето Эратосфена","\u002Fblog\u002Fpython\u002Fst21","blog\u002Fpython\u002Fst21",{"title":246,"path":247,"stem":248},"Длинная арифметика","\u002Fblog\u002Fpython\u002Fst22","blog\u002Fpython\u002Fst22",{"title":250,"path":251,"stem":252},"Декораторы функций","\u002Fblog\u002Fpython\u002Fst23","blog\u002Fpython\u002Fst23",{"title":254,"path":255,"stem":256},"Знакомство с алгоритмами","\u002Fblog\u002Fpython\u002Fst24","blog\u002Fpython\u002Fst24",{"title":258,"path":259,"stem":260},"Бинарный поиск – примеры задач","\u002Fblog\u002Fpython\u002Fst25","blog\u002Fpython\u002Fst25",{"title":262,"path":263,"stem":264},"Сортировка выбором","\u002Fblog\u002Fpython\u002Fst26","blog\u002Fpython\u002Fst26",{"title":266,"path":267,"stem":268},"Рекурсия и стек","\u002Fblog\u002Fpython\u002Fst27","blog\u002Fpython\u002Fst27",{"title":270,"path":271,"stem":272},"Быстрая сортировка","\u002Fblog\u002Fpython\u002Fst28","blog\u002Fpython\u002Fst28",{"title":274,"path":275,"stem":276},"Поиск в ширину","\u002Fblog\u002Fpython\u002Fst29","blog\u002Fpython\u002Fst29",{"title":278,"path":279,"stem":280},"Работа со строками","\u002Fblog\u002Fpython\u002Fst3","blog\u002Fpython\u002Fst3",{"title":282,"path":283,"stem":284},"Поиск в глубину","\u002Fblog\u002Fpython\u002Fst30","blog\u002Fpython\u002Fst30",{"title":286,"path":287,"stem":288},"Сбалансированные деревья","\u002Fblog\u002Fpython\u002Fst31","blog\u002Fpython\u002Fst31",{"title":290,"path":291,"stem":292},"Алгоритм Дейкстры","\u002Fblog\u002Fpython\u002Fst32","blog\u002Fpython\u002Fst32",{"title":294,"path":295,"stem":296},"Жадные алгоритмы","\u002Fblog\u002Fpython\u002Fst33","blog\u002Fpython\u002Fst33",{"title":298,"path":299,"stem":300},"Динамическое программирование","\u002Fblog\u002Fpython\u002Fst34","blog\u002Fpython\u002Fst34",{"title":302,"path":303,"stem":304},"Алгоритм k ближайших соседей","\u002Fblog\u002Fpython\u002Fst35","blog\u002Fpython\u002Fst35",{"title":306,"path":307,"stem":308},"Типы данных","\u002Fblog\u002Fpython\u002Fst4","blog\u002Fpython\u002Fst4",{"title":310,"path":311,"stem":312},"О функциях","\u002Fblog\u002Fpython\u002Fst5","blog\u002Fpython\u002Fst5",{"title":314,"path":315,"stem":316},"Свойства и методы","\u002Fblog\u002Fpython\u002Fst6","blog\u002Fpython\u002Fst6",{"title":318,"path":319,"stem":320},"Определение функций","\u002Fblog\u002Fpython\u002Fst7","blog\u002Fpython\u002Fst7",{"title":322,"path":323,"stem":324},"Логика","\u002Fblog\u002Fpython\u002Fst8","blog\u002Fpython\u002Fst8",{"title":326,"path":327,"stem":328},"Циклы","\u002Fblog\u002Fpython\u002Fst9","blog\u002Fpython\u002Fst9",{"title":330,"path":331,"stem":332,"children":333,"page":114},"Toi","\u002Fblog\u002Ftoi","blog\u002Ftoi",[334,338,342,346,350,354,358,362,366,370,374,378,382],{"title":335,"path":336,"stem":337},"Информация и информационные процессы","\u002Fblog\u002Ftoi\u002Fst1","blog\u002Ftoi\u002Fst1",{"title":339,"path":340,"stem":341},"Электронные таблицы","\u002Fblog\u002Ftoi\u002Fst10","blog\u002Ftoi\u002Fst10",{"title":343,"path":344,"stem":345},"Система, её свойства и компоненты. Моделирование","\u002Fblog\u002Ftoi\u002Fst11","blog\u002Ftoi\u002Fst11",{"title":347,"path":348,"stem":349},"Представление информации в компьютере","\u002Fblog\u002Ftoi\u002Fst12","blog\u002Ftoi\u002Fst12",{"title":351,"path":352,"stem":353},"Средства информационно-коммуникационных технологий. Файловая система","\u002Fblog\u002Ftoi\u002Fst13","blog\u002Ftoi\u002Fst13",{"title":355,"path":356,"stem":357},"Комбинаторика","\u002Fblog\u002Ftoi\u002Fst2","blog\u002Ftoi\u002Fst2",{"title":359,"path":360,"stem":361},"Адресация в интернете","\u002Fblog\u002Ftoi\u002Fst3","blog\u002Ftoi\u002Fst3",{"title":363,"path":364,"stem":365},"Измерение количества информации","\u002Fblog\u002Ftoi\u002Fst4","blog\u002Ftoi\u002Fst4",{"title":367,"path":368,"stem":369},"Системы счисления","\u002Fblog\u002Ftoi\u002Fst5","blog\u002Ftoi\u002Fst5",{"title":371,"path":372,"stem":373},"Диаграммы Эйлера — Венна","\u002Fblog\u002Ftoi\u002Fst6","blog\u002Ftoi\u002Fst6",{"title":375,"path":376,"stem":377},"Условие Фано","\u002Fblog\u002Ftoi\u002Fst7","blog\u002Ftoi\u002Fst7",{"title":379,"path":380,"stem":381},"Теория графов","\u002Fblog\u002Ftoi\u002Fst8","blog\u002Ftoi\u002Fst8",{"title":383,"path":384,"stem":385},"Алгебра логики","\u002Fblog\u002Ftoi\u002Fst9","blog\u002Ftoi\u002Fst9",{"id":387,"title":190,"author":388,"body":393,"date":1874,"description":1875,"extension":1876,"image":1877,"meta":1878,"minRead":1879,"navigation":1650,"num":422,"path":191,"seo":1880,"stem":192,"__hash__":1881},"python\u002Fblog\u002Fpython\u002Fst1.md",{"name":389,"avatar":390},"Штана Альберт Игоревич",{"src":391,"alt":392},"me.jpg","@ashtana",{"type":394,"value":395,"toc":1854},"minimark",[396,401,405,408,445,450,453,456,477,480,495,498,518,522,525,528,531,534,537,576,579,613,616,619,624,627,630,647,650,653,656,659,681,684,714,717,780,784,800,819,822,825,828,850,853,857,860,863,867,870,901,904,907,911,914,940,943,946,1027,1030,1033,1116,1119,1123,1126,1129,1132,1146,1149,1152,1156,1159,1162,1165,1186,1189,1198,1202,1205,1236,1239,1250,1254,1257,1260,1276,1279,1304,1307,1310,1326,1329,1332,1335,1347,1384,1387,1390,1415,1419,1422,1439,1442,1463,1466,1473,1476,1496,1499,1502,1509,1512,1544,1547,1572,1575,1584,1633,1636,1657,1665,1691,1694,1698,1701,1704,1733,1736,1777,1780,1783,1836,1847,1850],[397,398,400],"h2",{"id":399},"hello-world","Hello World!",[402,403,404],"p",{},"Изучение нового языка программирования традиционно начинается с 'Hello, World!'. Это простая программа, которая выводит приветствие на экран и заодно знакомит с новым языком — его синтаксисом.",[402,406,407],{},"Этой традиции уже больше сорока пяти лет, поэтому и мы не будем нарушать ее. Напишем программу Hello, World!. Чтобы сделать это, нужно дать компьютеру специальную команду на вывод. В языке Python это — print():",[409,410,415],"pre",{"className":411,"code":412,"language":413,"meta":414,"style":414},"language-python shiki shiki-themes github-light","print('Hello, World!')\n# => Hello, World!\n","python","",[416,417,418,438],"code",{"__ignoreMap":414},[419,420,423,427,431,435],"span",{"class":421,"line":422},"line",1,[419,424,426],{"class":425},"sYu0t","print",[419,428,430],{"class":429},"sgsFI","(",[419,432,434],{"class":433},"sYBdl","'Hello, World!'",[419,436,437],{"class":429},")\n",[419,439,441],{"class":421,"line":440},2,[419,442,444],{"class":443},"sAwPA","# => Hello, World!\n",[446,447,449],"h4",{"id":448},"как-работают-комментарии","Как работают комментарии",[402,451,452],{},"Практически все языки программирования позволяют оставлять в коде комментарии. Они никак не используются интерпретатором Python. Они нужны исключительно для людей, чтобы программист оставлял пометки для себя и для других программистов.",[402,454,455],{},"С их помощью добавляют пояснения, как работает код, какие ошибки нужно поправить или не забыть что-то добавить позже:",[409,457,459],{"className":411,"code":458,"language":413,"meta":414,"style":414},"# Удалить строку ниже после реализации задачи по регистрации\nprint(\"Сделайте регистрацию\")\n",[416,460,461,466],{"__ignoreMap":414},[419,462,463],{"class":421,"line":422},[419,464,465],{"class":443},"# Удалить строку ниже после реализации задачи по регистрации\n",[419,467,468,470,472,475],{"class":421,"line":440},[419,469,426],{"class":425},[419,471,430],{"class":429},[419,473,474],{"class":433},"\"Сделайте регистрацию\"",[419,476,437],{"class":429},[402,478,479],{},"Комментарии в Python начинаются со знака # и могут появляться в любом месте программы. Они могут занимать всю строку. Если одной строки мало, то создается несколько комментариев:",[409,481,483],{"className":411,"code":482,"language":413,"meta":414,"style":414},"# Это первый комментарий!\n# Это второй комментарий!\n",[416,484,485,490],{"__ignoreMap":414},[419,486,487],{"class":421,"line":422},[419,488,489],{"class":443},"# Это первый комментарий!\n",[419,491,492],{"class":421,"line":440},[419,493,494],{"class":443},"# Это второй комментарий!\n",[402,496,497],{},"Комментарий может находиться на строке после кода:",[409,499,501],{"className":411,"code":500,"language":413,"meta":414,"style":414},"print('Hello World!')  # Подробности тут: https:\u002F\u002Fru.wikipedia.org\u002Fwiki\u002FHello,_world!\n",[416,502,503],{"__ignoreMap":414},[419,504,505,507,509,512,515],{"class":421,"line":422},[419,506,426],{"class":425},[419,508,430],{"class":429},[419,510,511],{"class":433},"'Hello World!'",[419,513,514],{"class":429},")  ",[419,516,517],{"class":443},"# Подробности тут: https:\u002F\u002Fru.wikipedia.org\u002Fwiki\u002FHello,_world!\n",[446,519,521],{"id":520},"инструкции","Инструкции",[402,523,524],{},"Когда мы оплачиваем покупки в магазине, то четко следуем инструкции по оплате. Иначе нам не продадут товар или услугу. Также и в программировании важно соблюдать инструкции.",[402,526,527],{},"Чтобы увидеть на экране ожидаемый результат, нужно дать компьютеру четкие и пошаговые указания. Это можно сделать с помощью инструкций. Инструкция — это команда для компьютера, единица выполнения. Код на Python в этом случае — это набор инструкций. Его можно представить в виде пошагового алгоритма действий компьютера.",[402,529,530],{},"Код на Python запускает интерпретатор — программу, которая выполняет инструкции строго по очереди. Как и шаги в рецепте, наборы инструкций для интерпретатора пишутся по порядку и отделяются друг от друга переходом на следующую строку.",[402,532,533],{},"Разработчики должны понимать порядок действий в коде и уметь мысленно разделять программу на независимые части, удобные для анализа.",[402,535,536],{},"Посмотрим на пример кода с двумя инструкциями. При его запуске на экран последовательно выводятся два предложения:",[409,538,540],{"className":411,"code":539,"language":413,"meta":414,"style":414},"print('Выводи это сообщение первым.')\nprint('А это выводи вторым на экран!')\n# => Выводи это сообщение первым.\n# => А это выводи вторым на экран!\n",[416,541,542,553,564,570],{"__ignoreMap":414},[419,543,544,546,548,551],{"class":421,"line":422},[419,545,426],{"class":425},[419,547,430],{"class":429},[419,549,550],{"class":433},"'Выводи это сообщение первым.'",[419,552,437],{"class":429},[419,554,555,557,559,562],{"class":421,"line":440},[419,556,426],{"class":425},[419,558,430],{"class":429},[419,560,561],{"class":433},"'А это выводи вторым на экран!'",[419,563,437],{"class":429},[419,565,567],{"class":421,"line":566},3,[419,568,569],{"class":443},"# => Выводи это сообщение первым.\n",[419,571,573],{"class":421,"line":572},4,[419,574,575],{"class":443},"# => А это выводи вторым на экран!\n",[402,577,578],{},"Выше мы говорили, что инструкции отделяются друг от друга переходом на новую строку. Но есть и другой способ: их можно разделить точкой с запятой — ;:",[409,580,582],{"className":411,"code":581,"language":413,"meta":414,"style":414},"print('Выводи это сообщение первым.'); print('Подробнее об интерпретаторах тут: https:\u002F\u002Fru.wikipedia.org\u002Fwiki\u002FИнтерпретатор')\n# => Выводи это сообщение первым.\n# => Подробнее об интерпретаторах тут: https:\u002F\u002Fru.wikipedia.org\u002Fwiki\u002FИнтерпретатор\n",[416,583,584,604,608],{"__ignoreMap":414},[419,585,586,588,590,592,595,597,599,602],{"class":421,"line":422},[419,587,426],{"class":425},[419,589,430],{"class":429},[419,591,550],{"class":433},[419,593,594],{"class":429},"); ",[419,596,426],{"class":425},[419,598,430],{"class":429},[419,600,601],{"class":433},"'Подробнее об интерпретаторах тут: https:\u002F\u002Fru.wikipedia.org\u002Fwiki\u002FИнтерпретатор'",[419,603,437],{"class":429},[419,605,606],{"class":421,"line":440},[419,607,569],{"class":443},[419,609,610],{"class":421,"line":566},[419,611,612],{"class":443},"# => Подробнее об интерпретаторах тут: https:\u002F\u002Fru.wikipedia.org\u002Fwiki\u002FИнтерпретатор\n",[402,614,615],{},"Технической разницы между первым и вторым вариантом нет — интерпретатор поймет инструкции одинаково. Разница только в том, что человеку будет неудобно читать второй вариант.",[402,617,618],{},"Лучше инструкции располагать друг под другом. Так всем будет удобнее читать код, обслуживать его и вносить изменения.",[620,621,623],"h3",{"id":622},"арифметические-операции","Арифметические операции",[402,625,626],{},"На базовом уровне компьютеры оперируют только числами. Даже в прикладных программах на высокоуровневых языках внутри много чисел и операций над ними. Но для старта достаточно знать обычную арифметику — с нее и начнем.",[402,628,629],{},"Например, для сложения двух чисел в математике мы пишем: 2 + 2. В программировании — то же самое. Вот программа, которая складывает два числа:",[409,631,633],{"className":411,"code":632,"language":413,"meta":414,"style":414},"2 + 2\n",[416,634,635],{"__ignoreMap":414},[419,636,637,640,644],{"class":421,"line":422},[419,638,639],{"class":425},"2",[419,641,643],{"class":642},"sD7c4"," +",[419,645,646],{"class":425}," 2\n",[402,648,649],{},"Арифметика в программировании практически не отличается от школьной арифметики.",[402,651,652],{},"Строчка кода 2 + 2 заставит интерпретатор сложить числа и узнать результат. Эта программа будет работать, но в ней нет смысла. По сути, мы не даем команду интерпретатору, мы просто говорим ему: «Смотри, сумма два и два». В реальной работе недостаточно сообщать интерпретатору о математическом выражении.",[402,654,655],{},"Например, если создавать интернет-магазин, недостаточно просить интерпретатор посчитать стоимость товаров в корзине. Нужно просить посчитать стоимость и показать цену покупателю.",[402,657,658],{},"Нам нужно попросить интерпретатор сложить 2 + 2 и дать команду сделать что-то с результатом. Например, вывести его на экран:",[409,660,662],{"className":411,"code":661,"language":413,"meta":414,"style":414},"# Сначала вычисляется сумма, затем она передается в функцию печати\n2 + 2  # => 4\n",[416,663,664,669],{"__ignoreMap":414},[419,665,666],{"class":421,"line":422},[419,667,668],{"class":443},"# Сначала вычисляется сумма, затем она передается в функцию печати\n",[419,670,671,673,675,678],{"class":421,"line":440},[419,672,639],{"class":425},[419,674,643],{"class":642},[419,676,677],{"class":425}," 2",[419,679,680],{"class":443},"  # => 4\n",[402,682,683],{},"Кроме сложения, доступны следующие операции:",[685,686,687,695,702,705,708,711],"ul",{},[688,689,690],"li",{},[685,691,692],{},[688,693,694],{},"— вычитание",[688,696,697],{},[685,698,699],{},[688,700,701],{},"— умножение",[688,703,704],{},"** — возведение в степень",[688,706,707],{},"\u002F — деление",[688,709,710],{},"\u002F\u002F — целочисленное деление",[688,712,713],{},"% — остаток от деления",[402,715,716],{},"Теперь выведем на экран результат деления, результат возведения в степень и результат получения остатка от деления:",[409,718,720],{"className":411,"code":719,"language":413,"meta":414,"style":414},"print(6 \u002F 2)   # => 3.0 (При делении двух чисел получается тип данных float)\nprint(4 ** 2)  # => 16\nprint(7 % 2)   # => 1\n",[416,721,722,742,761],{"__ignoreMap":414},[419,723,724,726,728,731,734,736,739],{"class":421,"line":422},[419,725,426],{"class":425},[419,727,430],{"class":429},[419,729,730],{"class":425},"6",[419,732,733],{"class":642}," \u002F",[419,735,677],{"class":425},[419,737,738],{"class":429},")   ",[419,740,741],{"class":443},"# => 3.0 (При делении двух чисел получается тип данных float)\n",[419,743,744,746,748,751,754,756,758],{"class":421,"line":440},[419,745,426],{"class":425},[419,747,430],{"class":429},[419,749,750],{"class":425},"4",[419,752,753],{"class":642}," **",[419,755,677],{"class":425},[419,757,514],{"class":429},[419,759,760],{"class":443},"# => 16\n",[419,762,763,765,767,770,773,775,777],{"class":421,"line":566},[419,764,426],{"class":425},[419,766,430],{"class":429},[419,768,769],{"class":425},"7",[419,771,772],{"class":642}," %",[419,774,677],{"class":425},[419,776,738],{"class":429},[419,778,779],{"class":443},"# => 1\n",[446,781,783],{"id":782},"операторы-и-операнды","Операторы и операнды",[402,785,786,787,791,792,795,796,799],{},"Знак операции, такой как ",[788,789,790],"strong",{},"+",", называют ",[788,793,794],{},"оператором",". Операторы выполняют операции над определенными значениями, которые называются ",[788,797,798],{},"операндами",". Сами операторы — это обычно один или несколько символов. Реже — слово. Подавляющее большинство операторов соответствуют математическим операциям.",[409,801,803],{"className":411,"code":802,"language":413,"meta":414,"style":414},"print(2 + 2)\n",[416,804,805],{"__ignoreMap":414},[419,806,807,809,811,813,815,817],{"class":421,"line":422},[419,808,426],{"class":425},[419,810,430],{"class":429},[419,812,639],{"class":425},[419,814,643],{"class":642},[419,816,677],{"class":425},[419,818,437],{"class":429},[402,820,821],{},"В этом примере + — это оператор, а числа 2 и 2 — это операнды.",[402,823,824],{},"Когда мы складываем, у нас есть два операнда: один слева, другой справа от знака +. Операции, которые требуют наличия двух операндов, называются бинарными. Если пропустить хотя бы один операнд, например, 2 +, то программа завершится с синтаксической ошибкой.",[402,826,827],{},"Операции бывают не только бинарными, но и унарными — с одним операндом, и тернарными — с тремя операндами. Причем операторы могут выглядеть одинаково, но обозначать разные операции. Символы + и - используются не только как операторы. Когда речь идет про отрицательные числа, то знак минуса становится частью числа:",[409,829,831],{"className":411,"code":830,"language":413,"meta":414,"style":414},"print(-5)  # => -5\n",[416,832,833],{"__ignoreMap":414},[419,834,835,837,839,842,845,847],{"class":421,"line":422},[419,836,426],{"class":425},[419,838,430],{"class":429},[419,840,841],{"class":642},"-",[419,843,844],{"class":425},"5",[419,846,514],{"class":429},[419,848,849],{"class":443},"# => -5\n",[402,851,852],{},"Выше пример применения унарной операции к числу 5. Оператор минус перед тройкой говорит интерпретатору взять число 5 и найти противоположное, то есть -5. Это может сбить с толку, потому что -5 — это одновременно и число само по себе, и оператор с операндом. Но у языков программирования такая структура.",[446,854,856],{"id":855},"коммутативная-операция","Коммутативная операция",[402,858,859],{},"«От перемены мест слагаемых сумма не меняется» — это один из базовых законов арифметики, который также называется коммутативным законом. Бинарная операция считается коммутативной, если вы получаете тот же самый результат, поменяв местами операнды. В этом случае сложение — это коммутативная операция: 3 + 2 = 2 + 3.",[402,861,862],{},"Но вычитание — это не коммутативная операция: 2 - 3 ≠ 3 - 2. В программировании этот закон работает точно так же, как в арифметике. Более того, большинство операций, с которыми мы сталкиваемся в реальной жизни, не являются коммутативными. Отсюда вывод: всегда обращайте внимание на порядок того, с чем работаете.",[446,864,866],{"id":865},"композиция-операций","Композиция операций",[402,868,869],{},"Рассмотрим пример:",[409,871,873],{"className":411,"code":872,"language":413,"meta":414,"style":414},"print(2 * 3 * 4 * 5)\n",[416,874,875],{"__ignoreMap":414},[419,876,877,879,881,883,886,889,891,894,896,899],{"class":421,"line":422},[419,878,426],{"class":425},[419,880,430],{"class":429},[419,882,639],{"class":425},[419,884,885],{"class":642}," *",[419,887,888],{"class":425}," 3",[419,890,885],{"class":642},[419,892,893],{"class":425}," 4",[419,895,885],{"class":642},[419,897,898],{"class":425}," 5",[419,900,437],{"class":429},[402,902,903],{},"Операции можно соединять друг с другом и вычислять все более сложные составные выражения. Чтобы представить, как происходят вычисления внутри интерпретатора, разберем пример: 2 * 3 * 3 * 5.",[402,905,906],{},"Сначала вычисляется 2 * 3 и получается выражение 6 * 4 * 5\nЗатем 6 * 4. В итоге имеем 24 * 5\nВ итоге происходит последнее умножение, и получается результат 120\nОперации могут содержать разные операторы, из-за чего появляется вопрос об их приоритете.",[446,908,910],{"id":909},"приоритет-операций","Приоритет операций",[402,912,913],{},"Представим, что нужно вычислить такое выражение: 2 + 2 * 2. Именно так и запишем:",[409,915,917],{"className":411,"code":916,"language":413,"meta":414,"style":414},"print(2 + 2 * 2)  # => 6\n",[416,918,919],{"__ignoreMap":414},[419,920,921,923,925,927,929,931,933,935,937],{"class":421,"line":422},[419,922,426],{"class":425},[419,924,430],{"class":429},[419,926,639],{"class":425},[419,928,643],{"class":642},[419,930,677],{"class":425},[419,932,885],{"class":642},[419,934,677],{"class":425},[419,936,514],{"class":429},[419,938,939],{"class":443},"# => 6\n",[402,941,942],{},"В школьной математике есть понятие «приоритет операции». Приоритет определяет, в какой последовательности должны выполняться операции. Умножение и деление имеют больший приоритет, чем сложение и вычитание, а приоритет возведения в степень выше всех остальных арифметических операций. Например: 2 ** 3 * 2 вычислится в 16.",[402,944,945],{},"Но нередко вычисления должны происходить в порядке, отличном от стандартного приоритета. Тогда приоритет нужно задавать круглыми скобками. Так и в школе, например: (2 + 2) * 2. В скобки можно заключать любую операцию. Они могут вкладываться друг в друга сколько угодно раз. Вот примеры:",[409,947,949],{"className":411,"code":948,"language":413,"meta":414,"style":414},"print(3 ** (4 - 2))  # => 9\nprint(7 * 3 + (4 \u002F 2) - (8 + (2 - 1)))  # => 14.0\n",[416,950,951,978],{"__ignoreMap":414},[419,952,953,955,957,960,962,965,967,970,972,975],{"class":421,"line":422},[419,954,426],{"class":425},[419,956,430],{"class":429},[419,958,959],{"class":425},"3",[419,961,753],{"class":642},[419,963,964],{"class":429}," (",[419,966,750],{"class":425},[419,968,969],{"class":642}," -",[419,971,677],{"class":425},[419,973,974],{"class":429},"))  ",[419,976,977],{"class":443},"# => 9\n",[419,979,980,982,984,986,988,990,992,994,996,998,1000,1003,1005,1007,1010,1012,1014,1016,1018,1021,1024],{"class":421,"line":440},[419,981,426],{"class":425},[419,983,430],{"class":429},[419,985,769],{"class":425},[419,987,885],{"class":642},[419,989,888],{"class":425},[419,991,643],{"class":642},[419,993,964],{"class":429},[419,995,750],{"class":425},[419,997,733],{"class":642},[419,999,677],{"class":425},[419,1001,1002],{"class":429},") ",[419,1004,841],{"class":642},[419,1006,964],{"class":429},[419,1008,1009],{"class":425},"8",[419,1011,643],{"class":642},[419,1013,964],{"class":429},[419,1015,639],{"class":425},[419,1017,969],{"class":642},[419,1019,1020],{"class":425}," 1",[419,1022,1023],{"class":429},")))  ",[419,1025,1026],{"class":443},"# => 14.0\n",[402,1028,1029],{},"Главное при этом соблюдать парность — закрывать скобки в правильном порядке. Это часто становится причиной ошибок не только у новичков, но и у опытных программистов.",[402,1031,1032],{},"Иногда выражение сложно воспринимать визуально. Тогда можно расставить скобки, не повлияв на приоритет:",[409,1034,1036],{"className":411,"code":1035,"language":413,"meta":414,"style":414},"# Было\nprint(8 \u002F 2 + 5 - -3 \u002F 2)  # => 10.5\n# Стало\nprint(((8 \u002F 2) + 5) - (-3 \u002F 2))  # => 10.5\n",[416,1037,1038,1043,1074,1079],{"__ignoreMap":414},[419,1039,1040],{"class":421,"line":422},[419,1041,1042],{"class":443},"# Было\n",[419,1044,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071],{"class":421,"line":440},[419,1046,426],{"class":425},[419,1048,430],{"class":429},[419,1050,1009],{"class":425},[419,1052,733],{"class":642},[419,1054,677],{"class":425},[419,1056,643],{"class":642},[419,1058,898],{"class":425},[419,1060,969],{"class":642},[419,1062,969],{"class":642},[419,1064,959],{"class":425},[419,1066,733],{"class":642},[419,1068,677],{"class":425},[419,1070,514],{"class":429},[419,1072,1073],{"class":443},"# => 10.5\n",[419,1075,1076],{"class":421,"line":566},[419,1077,1078],{"class":443},"# Стало\n",[419,1080,1081,1083,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114],{"class":421,"line":572},[419,1082,426],{"class":425},[419,1084,1085],{"class":429},"(((",[419,1087,1009],{"class":425},[419,1089,733],{"class":642},[419,1091,677],{"class":425},[419,1093,1002],{"class":429},[419,1095,790],{"class":642},[419,1097,898],{"class":425},[419,1099,1002],{"class":429},[419,1101,841],{"class":642},[419,1103,964],{"class":429},[419,1105,841],{"class":642},[419,1107,959],{"class":425},[419,1109,733],{"class":642},[419,1111,677],{"class":425},[419,1113,974],{"class":429},[419,1115,1073],{"class":443},[402,1117,1118],{},"Важно запомнить: код пишется для людей. Код будут читать люди, а машины будут только исполнять его. Для машин код — корректный или некорректный. Для них нет «более» понятного или «менее» понятного кода.",[620,1120,1122],{"id":1121},"ошибки-оформления-кода","Ошибки оформления кода",[402,1124,1125],{},"Если программа на Python написана синтаксически некорректно, то интерпретатор выводит на экран соответствующее сообщение. Также он указывает на файл и строчку, где произошла ошибка.",[402,1127,1128],{},"Синтаксическая ошибка возникает в том случае, когда код записали с нарушением грамматических правил. В естественных языках грамматика важна, но текст с ошибками обычно можно понять и прочитать. В программировании все строго. Мельчайшее нарушение — и программа даже не запустится. Примером может быть забытое двоеточие(:) неправильно расставленные скобки и другие детали.",[402,1130,1131],{},"Вот пример кода с синтаксической ошибкой:",[409,1133,1135],{"className":411,"code":1134,"language":413,"meta":414,"style":414},"print('Привет)\n",[416,1136,1137],{"__ignoreMap":414},[419,1138,1139,1141,1143],{"class":421,"line":422},[419,1140,426],{"class":425},[419,1142,430],{"class":429},[419,1144,1145],{"class":433},"'Привет)\n",[402,1147,1148],{},"Если запустить код выше, то мы увидим следующее сообщение: SyntaxError: EOL while scanning string literal",[402,1150,1151],{},"С одной стороны, ошибки синтаксиса — самые простые, потому что они связаны с грамматическими правилами написания кода, а не со смыслом кода. Их легко исправить: нужно лишь найти нарушение в записи. С другой стороны, интерпретатор не всегда может четко указать на это нарушение. Поэтому бывает, что забытую скобку нужно поставить не туда, куда указывает сообщение об ошибке.",[446,1153,1155],{"id":1154},"ошибки-линтера","Ошибки линтера",[402,1157,1158],{},"Код нужно оформлять определенным образом, чтобы он был понятным и простым в поддержке. Существуют специальные наборы правил, которые описывают различные аспекты написания кода — их называют стандартами кодирования. В Python стандарт один — PEP8. Он отвечает практически на все вопросы о том, как оформлять ту или иную часть кода. Этот документ содержит все правила, которых нужно придерживаться. Новичкам мы советуем завести привычку заглядывать в стандарт PEP8 и писать код по нему.",[402,1160,1161],{},"Сегодня не нужно помнить все правила из стандарта, потому что существуют специальные программы, которые проверяют код автоматически и сообщают о нарушениях. Такие программы называются линтерами. Они проверяют код на соответствие стандартам. В Python их достаточно много, и наиболее популярный из них — flake8.",[402,1163,1164],{},"Взгляните на пример:",[409,1166,1168],{"className":411,"code":1167,"language":413,"meta":414,"style":414},"x =1+ 3\n",[416,1169,1170],{"__ignoreMap":414},[419,1171,1172,1175,1178,1181,1183],{"class":421,"line":422},[419,1173,1174],{"class":429},"x ",[419,1176,1177],{"class":642},"=",[419,1179,1180],{"class":425},"1",[419,1182,790],{"class":642},[419,1184,1185],{"class":425}," 3\n",[402,1187,1188],{},"Линтер будет предупреждать на нарушение правила: E225 missing whitespace around operator. По стандарту, все операторы всегда должны отделяться пробелами от операндов.",[402,1190,1191,1192],{},"Выше мы увидели правило E225 — это одно из большого количества правил. Другие правила описывают отступы, названия, скобки, математические операции, длину строчек и множество иных аспектов. Каждое отдельное правило кажется неважным и мелким, но вместе они составляют основу хорошего кода. Список всех правил PEP8 доступен в документации на сайте:\n",[1193,1194,1195],"a",{"href":1195,"rel":1196},"https:\u002F\u002Fpeps.python.org\u002Fpep-0008\u002F",[1197],"nofollow",[620,1199,1201],{"id":1200},"немного-про-строки","Немного про строки",[402,1203,1204],{},"Определить строку довольно просто — это некий набор символов. Представим, что у нас есть такие записи:",[409,1206,1208],{"className":411,"code":1207,"language":413,"meta":414,"style":414},"'Hello'\n'Goodbye'\n'G'\n' '\n''\n",[416,1209,1210,1215,1220,1225,1230],{"__ignoreMap":414},[419,1211,1212],{"class":421,"line":422},[419,1213,1214],{"class":433},"'Hello'\n",[419,1216,1217],{"class":421,"line":440},[419,1218,1219],{"class":433},"'Goodbye'\n",[419,1221,1222],{"class":421,"line":566},[419,1223,1224],{"class":433},"'G'\n",[419,1226,1227],{"class":421,"line":572},[419,1228,1229],{"class":433},"' '\n",[419,1231,1233],{"class":421,"line":1232},5,[419,1234,1235],{"class":433},"''\n",[402,1237,1238],{},"Какие из этих вариантов — строки? На самом деле, все пять вариантов подходят:",[685,1240,1241,1244,1247],{},[688,1242,1243],{},"С 'Hello' и 'Goodbye' все очевидно — мы уже работали с подобными конструкциями и называли их строками",[688,1245,1246],{},"'G' и ' ' — тоже строки, просто в них всего по одному символу",[688,1248,1249],{},"'' — это пустая строка, потому что в ней ноль символов",[446,1251,1253],{"id":1252},"кавычки","Кавычки",[402,1255,1256],{},"Строкой мы считаем все, что находится внутри кавычек: даже если это пробел, один символ или вообще отсутствие символов.",[402,1258,1259],{},"Выше мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:",[409,1261,1263],{"className":411,"code":1262,"language":413,"meta":414,"style":414},"print(\"Это строка!\")\n",[416,1264,1265],{"__ignoreMap":414},[419,1266,1267,1269,1271,1274],{"class":421,"line":422},[419,1268,426],{"class":425},[419,1270,430],{"class":429},[419,1272,1273],{"class":433},"\"Это строка!\"",[419,1275,437],{"class":429},[402,1277,1278],{},"Теперь представьте, что вы хотите напечатать строчку Python's. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:",[409,1280,1282],{"className":411,"code":1281,"language":413,"meta":414,"style":414},"print('Python's')\n# SyntaxError: invalid syntax\n",[416,1283,1284,1299],{"__ignoreMap":414},[419,1285,1286,1288,1290,1293,1296],{"class":421,"line":422},[419,1287,426],{"class":425},[419,1289,430],{"class":429},[419,1291,1292],{"class":433},"'Python'",[419,1294,1295],{"class":429},"s",[419,1297,1298],{"class":433},"')\n",[419,1300,1301],{"class":421,"line":440},[419,1302,1303],{"class":443},"# SyntaxError: invalid syntax\n",[402,1305,1306],{},"Такая программа не будет работать. С точки зрения Python, строчка началась с одинарной кавычки, а потом закончилась после слова Python. Дальше были символы s без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: '). Этот код содержит синтаксическую ошибку — это видно даже по тому, как подсвечен код.",[402,1308,1309],{},"Чтобы избежать этой ошибки, мы используем двойные кавычки. Такой вариант программы сработает верно:",[409,1311,1313],{"className":411,"code":1312,"language":413,"meta":414,"style":414},"print(\"Python's\")\n",[416,1314,1315],{"__ignoreMap":414},[419,1316,1317,1319,1321,1324],{"class":421,"line":422},[419,1318,426],{"class":425},[419,1320,430],{"class":429},[419,1322,1323],{"class":433},"\"Python's\"",[419,1325,437],{"class":429},[402,1327,1328],{},"Теперь интерпретатор знает, что строка началась с двойной кавычки и закончиться должна тоже на двойной кавычке. А одинарная кавычка внутри стала частью строки.",[402,1330,1331],{},"Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку нужно заключать в одинарные. Причем количество кавычек внутри самой строки неважно.",[402,1333,1334],{},"Теперь представим, что мы хотим создать такую строку: Python's mother said \"No\". В ней есть и одинарные, и двойные кавычки. Нам нужно каким-то образом указать интерпретатору, что кавычки — это символы внутри строки, а не начало или конец строки.",[402,1336,1337,1338,1341,1342,1346],{},"Для этого используют ",[788,1339,1340],{},"символ экранирования",": *",[1343,1344,1345],"em",{},"*"," — обратный слэш. Если мы поставим \\ перед кавычкой (одинарной или двойной), то интерпретатор распознает кавычку как обычный символ внутри строки, а не начало или конец строки:",[409,1348,1350],{"className":411,"code":1349,"language":413,"meta":414,"style":414},"# Экранируем кавычки вокруг No, чтобы интерпретатор распознал их как часть строки\nprint(\"Python's mother said \\\"No\\\"\")\n# => Python's mother said \"No\"\n",[416,1351,1352,1357,1379],{"__ignoreMap":414},[419,1353,1354],{"class":421,"line":422},[419,1355,1356],{"class":443},"# Экранируем кавычки вокруг No, чтобы интерпретатор распознал их как часть строки\n",[419,1358,1359,1361,1363,1366,1369,1372,1374,1377],{"class":421,"line":440},[419,1360,426],{"class":425},[419,1362,430],{"class":429},[419,1364,1365],{"class":433},"\"Python's mother said ",[419,1367,1368],{"class":425},"\\\"",[419,1370,1371],{"class":433},"No",[419,1373,1368],{"class":425},[419,1375,1376],{"class":433},"\"",[419,1378,437],{"class":429},[419,1380,1381],{"class":421,"line":566},[419,1382,1383],{"class":443},"# => Python's mother said \"No\"\n",[402,1385,1386],{},"Обратите внимание, что в примере выше нам не пришлось экранировать одинарную кавычку (апостроф 's), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.",[402,1388,1389],{},"Если нужно вывести сам обратный слеш, то работает такое же правило. Как и любой другой специальный символ, его надо экранировать:",[409,1391,1393],{"className":411,"code":1392,"language":413,"meta":414,"style":414},"print(\"\\\\\")\n# => \\\n",[416,1394,1395,1410],{"__ignoreMap":414},[419,1396,1397,1399,1401,1403,1406,1408],{"class":421,"line":422},[419,1398,426],{"class":425},[419,1400,430],{"class":429},[419,1402,1376],{"class":433},[419,1404,1405],{"class":425},"\\\\",[419,1407,1376],{"class":433},[419,1409,437],{"class":429},[419,1411,1412],{"class":421,"line":440},[419,1413,1414],{"class":443},"# => \\\n",[446,1416,1418],{"id":1417},"экранированные-последовательности","Экранированные последовательности",[402,1420,1421],{},"Мы хотим показать вот такой диалог:",[409,1423,1427],{"className":1424,"code":1425,"language":1426,"meta":414,"style":414},"language-markdown shiki shiki-themes github-light","- Ты изучаешь Python?\n- Дааааа!\n","markdown",[416,1428,1429,1434],{"__ignoreMap":414},[419,1430,1431],{"class":421,"line":422},[419,1432,1433],{},"- Ты изучаешь Python?\n",[419,1435,1436],{"class":421,"line":440},[419,1437,1438],{},"- Дааааа!\n",[402,1440,1441],{},"Попробуем вывести на экран строку с таким текстом:",[409,1443,1445],{"className":411,"code":1444,"language":413,"meta":414,"style":414},"print(\"- Ты изучаешь Python? - Дааааа!\")\n# => - Ты изучаешь Python? - Дааааа!\n",[416,1446,1447,1458],{"__ignoreMap":414},[419,1448,1449,1451,1453,1456],{"class":421,"line":422},[419,1450,426],{"class":425},[419,1452,430],{"class":429},[419,1454,1455],{"class":433},"\"- Ты изучаешь Python? - Дааааа!\"",[419,1457,437],{"class":429},[419,1459,1460],{"class":421,"line":440},[419,1461,1462],{"class":443},"# => - Ты изучаешь Python? - Дааааа!\n",[402,1464,1465],{},"Результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа \\n:",[402,1467,1468,1469,1472],{},"\\n — это пример ",[788,1470,1471],{},"экранированной последовательности","(escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.",[402,1474,1475],{},"Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:",[409,1477,1479],{"className":1424,"code":1478,"language":1426,"meta":414,"style":414},"- Привет!¶\n- Добрый день сэр!¶\n- Как дела?\n",[416,1480,1481,1486,1491],{"__ignoreMap":414},[419,1482,1483],{"class":421,"line":422},[419,1484,1485],{},"- Привет!¶\n",[419,1487,1488],{"class":421,"line":440},[419,1489,1490],{},"- Добрый день сэр!¶\n",[419,1492,1493],{"class":421,"line":566},[419,1494,1495],{},"- Как дела?\n",[402,1497,1498],{},"Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.",[402,1500,1501],{},"Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:",[402,1503,1504,1505,1508],{},"Табуляция \\t — разрыв, который получается при нажатии на кнопку Tab ",[1506,1507],"br",{},"\nВозврат каретки \\r — работает только в Windows",[402,1510,1511],{},"Распознать такую управляющую конструкцию в тексте можно по символу . Программисты часто используют перевод строки \\n, чтобы правильно форматировать текст. Например, напишем такой код:",[409,1513,1515],{"className":411,"code":1514,"language":413,"meta":414,"style":414},"print(\"Математика\\nИнформатика\\nФизика\\nХимия\")\n",[416,1516,1517],{"__ignoreMap":414},[419,1518,1519,1521,1523,1526,1529,1532,1534,1537,1539,1542],{"class":421,"line":422},[419,1520,426],{"class":425},[419,1522,430],{"class":429},[419,1524,1525],{"class":433},"\"Математика",[419,1527,1528],{"class":425},"\\n",[419,1530,1531],{"class":433},"Информатика",[419,1533,1528],{"class":425},[419,1535,1536],{"class":433},"Физика",[419,1538,1528],{"class":425},[419,1540,1541],{"class":433},"Химия\"",[419,1543,437],{"class":429},[402,1545,1546],{},"Тогда на экран выведется:",[409,1548,1550],{"className":1424,"code":1549,"language":1426,"meta":414,"style":414},"Математика\nИнформатика\nФизика\nХимия\n",[416,1551,1552,1557,1562,1567],{"__ignoreMap":414},[419,1553,1554],{"class":421,"line":422},[419,1555,1556],{},"Математика\n",[419,1558,1559],{"class":421,"line":440},[419,1560,1561],{},"Информатика\n",[419,1563,1564],{"class":421,"line":566},[419,1565,1566],{},"Физика\n",[419,1568,1569],{"class":421,"line":572},[419,1570,1571],{},"Химия\n",[402,1573,1574],{},"Когда работаете с символом перевода, учитывайте следующие моменты:",[1576,1577,1578,1581],"ol",{},[688,1579,1580],{},"Не важно, что стоит перед или после \\n: символ или пустая строка. Перевод обнаружится и выполнится в любом случае.",[688,1582,1583],{},"Строка может содержать только \\n:",[409,1585,1587],{"className":411,"code":1586,"language":413,"meta":414,"style":414},"print('Привет') # Строка с текстом\nprint(\"\\n\") # Строка с невидимыми символами перевода строки\nprint('Мир!') # Строка с текстом\n",[416,1588,1589,1603,1620],{"__ignoreMap":414},[419,1590,1591,1593,1595,1598,1600],{"class":421,"line":422},[419,1592,426],{"class":425},[419,1594,430],{"class":429},[419,1596,1597],{"class":433},"'Привет'",[419,1599,1002],{"class":429},[419,1601,1602],{"class":443},"# Строка с текстом\n",[419,1604,1605,1607,1609,1611,1613,1615,1617],{"class":421,"line":440},[419,1606,426],{"class":425},[419,1608,430],{"class":429},[419,1610,1376],{"class":433},[419,1612,1528],{"class":425},[419,1614,1376],{"class":433},[419,1616,1002],{"class":429},[419,1618,1619],{"class":443},"# Строка с невидимыми символами перевода строки\n",[419,1621,1622,1624,1626,1629,1631],{"class":421,"line":566},[419,1623,426],{"class":425},[419,1625,430],{"class":429},[419,1627,1628],{"class":433},"'Мир!'",[419,1630,1002],{"class":429},[419,1632,1602],{"class":443},[402,1634,1635],{},"Программа выведет на экран:",[409,1637,1639],{"className":1424,"code":1638,"language":1426,"meta":414,"style":414},"Привет\n\nМир!\n",[416,1640,1641,1646,1652],{"__ignoreMap":414},[419,1642,1643],{"class":421,"line":422},[419,1644,1645],{},"Привет\n",[419,1647,1648],{"class":421,"line":440},[419,1649,1651],{"emptyLinePlaceholder":1650},true,"\n",[419,1653,1654],{"class":421,"line":566},[419,1655,1656],{},"Мир!\n",[1576,1658,1659,1662],{"start":566},[688,1660,1661],{},"В коде последовательность \\n выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ",[688,1663,1664],{},"Если нужно вывести \\n как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один \\ в начале. Последовательность \\n отобразится как символы \\ и n, которые идут друг за другом:",[409,1666,1668],{"className":411,"code":1667,"language":413,"meta":414,"style":414},"print(\"Привет мир! \\\\n\")\n# => Привет мир! \\n\n",[416,1669,1670,1686],{"__ignoreMap":414},[419,1671,1672,1674,1676,1679,1681,1684],{"class":421,"line":422},[419,1673,426],{"class":425},[419,1675,430],{"class":429},[419,1677,1678],{"class":433},"\"Привет мир! ",[419,1680,1405],{"class":425},[419,1682,1683],{"class":433},"n\"",[419,1685,437],{"class":429},[419,1687,1688],{"class":421,"line":440},[419,1689,1690],{"class":443},"# => Привет мир! \\n\n",[402,1692,1693],{},"В Windows для перевода строк по умолчанию используется \\r\\n. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.\nДело в том, что последовательность \\r\\n имеет разную трактовку в зависимости от выбранной кодировки. По этой причине в среде разработчиков принято всегда использовать \\n без \\r.\nВ таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе.",[446,1695,1697],{"id":1696},"конкатенация","Конкатенация",[402,1699,1700],{},"В веб-разработке программы постоянно оперируют строками. Все, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический — то есть он получается из разных частей, которые соединяются вместе.",[402,1702,1703],{},"Чтобы соединить строки, нужно выполнить конкатенацию:",[409,1705,1707],{"className":411,"code":1706,"language":413,"meta":414,"style":414},"# Оператор такой же, как и при сложении чисел, но здесь он имеет другой смысл\nprint('При' + 'вет')  # => Привет\n",[416,1708,1709,1714],{"__ignoreMap":414},[419,1710,1711],{"class":421,"line":422},[419,1712,1713],{"class":443},"# Оператор такой же, как и при сложении чисел, но здесь он имеет другой смысл\n",[419,1715,1716,1718,1720,1723,1725,1728,1730],{"class":421,"line":440},[419,1717,426],{"class":425},[419,1719,430],{"class":429},[419,1721,1722],{"class":433},"'При'",[419,1724,643],{"class":642},[419,1726,1727],{"class":433}," 'вет'",[419,1729,514],{"class":429},[419,1731,1732],{"class":443},"# => Привет\n",[402,1734,1735],{},"Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой. Вот еще несколько примеров:",[409,1737,1739],{"className":411,"code":1738,"language":413,"meta":414,"style":414},"print('Pyt' + 'hon')  # => Python\nprint(\"Pyt\" + 'hon')  # => Python\n",[416,1740,1741,1760],{"__ignoreMap":414},[419,1742,1743,1745,1747,1750,1752,1755,1757],{"class":421,"line":422},[419,1744,426],{"class":425},[419,1746,430],{"class":429},[419,1748,1749],{"class":433},"'Pyt'",[419,1751,643],{"class":642},[419,1753,1754],{"class":433}," 'hon'",[419,1756,514],{"class":429},[419,1758,1759],{"class":443},"# => Python\n",[419,1761,1762,1764,1766,1769,1771,1773,1775],{"class":421,"line":440},[419,1763,426],{"class":425},[419,1765,430],{"class":429},[419,1767,1768],{"class":433},"\"Pyt\"",[419,1770,643],{"class":642},[419,1772,1754],{"class":433},[419,1774,514],{"class":429},[419,1776,1759],{"class":443},[402,1778,1779],{},"Как видите, строки можно склеивать, даже если их записали с разными кавычками.",[402,1781,1782],{},"Пробел — такой же символ, как и другие, поэтому сколько пробелов поставите в строке, столько и получится в итоговой строке:",[409,1784,1786],{"className":411,"code":1785,"language":413,"meta":414,"style":414},"# Ставим пробел в левой части\nprint(\"Привет \" + 'мир!')  # => Привет мир!\n# Ставим пробел в правой части\nprint('Hello' + ' World!')  # => Hello World!\n",[416,1787,1788,1793,1812,1817],{"__ignoreMap":414},[419,1789,1790],{"class":421,"line":422},[419,1791,1792],{"class":443},"# Ставим пробел в левой части\n",[419,1794,1795,1797,1799,1802,1804,1807,1809],{"class":421,"line":440},[419,1796,426],{"class":425},[419,1798,430],{"class":429},[419,1800,1801],{"class":433},"\"Привет \"",[419,1803,643],{"class":642},[419,1805,1806],{"class":433}," 'мир!'",[419,1808,514],{"class":429},[419,1810,1811],{"class":443},"# => Привет мир!\n",[419,1813,1814],{"class":421,"line":566},[419,1815,1816],{"class":443},"# Ставим пробел в правой части\n",[419,1818,1819,1821,1823,1826,1828,1831,1833],{"class":421,"line":572},[419,1820,426],{"class":425},[419,1822,430],{"class":429},[419,1824,1825],{"class":433},"'Hello'",[419,1827,643],{"class":642},[419,1829,1830],{"class":433}," ' World!'",[419,1832,514],{"class":429},[419,1834,1835],{"class":443},"# => Hello World!\n",[402,1837,1838,1839,1842,1843,1846],{},"Попробуйте сами запустить код в окне ниже с интерпретатором Python и повторите примеры из статьи чтобы самим увидеть и понять как всё это работает.\nДля этого в ячейке с кодом нажмите клавиши на клавиатуре ",[788,1840,1841],{},"Shift+Enter"," или запустите код через ",[788,1844,1845],{},"кнопку Run"," по значку ▶.",[1848,1849],"jypiter",{},[1851,1852,1853],"style",{},"html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}",{"title":414,"searchDepth":440,"depth":1232,"links":1855},[1856],{"id":399,"depth":440,"text":400,"children":1857},[1858,1859,1860,1866,1869],{"id":448,"depth":572,"text":449},{"id":520,"depth":572,"text":521},{"id":622,"depth":566,"text":623,"children":1861},[1862,1863,1864,1865],{"id":782,"depth":572,"text":783},{"id":855,"depth":572,"text":856},{"id":865,"depth":572,"text":866},{"id":909,"depth":572,"text":910},{"id":1121,"depth":566,"text":1122,"children":1867},[1868],{"id":1154,"depth":572,"text":1155},{"id":1200,"depth":566,"text":1201,"children":1870},[1871,1872,1873],{"id":1252,"depth":572,"text":1253},{"id":1417,"depth":572,"text":1418},{"id":1696,"depth":572,"text":1697},"2025-01-19","Основы построения программ на Python. Арифметические операции. Ввод и вывод. Синтаксис","md","images\u002Fblog\u002Fpython\u002Fst1\u002Fimg.png",{},28,{"title":190,"description":1875},"5Jv-JZ7G3urqctPZW5iWszjSnQkyc2GlQM6h_pCi14U",[1883,1884],null,{"title":234,"path":235,"stem":236,"description":1885,"children":-1},"Использование и именование переменных",1780737507697]