[{"data":1,"prerenderedAt":1125},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fpython\u002Fst4":386,"\u002Fblog\u002Fpython\u002Fst4-surround":1120},[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":306,"author":388,"body":393,"date":1113,"description":1114,"extension":1115,"image":1116,"meta":1117,"minRead":810,"navigation":718,"num":704,"path":307,"seo":1118,"stem":308,"__hash__":1119},"python\u002Fblog\u002Fpython\u002Fst4.md",{"name":389,"avatar":390},"Штана Альберт Игоревич",{"src":391,"alt":392},"me.jpg","@ashtana",{"type":394,"value":395,"toc":1102},"minimark",[396,400,404,409,412,445,448,467,479,484,487,514,517,535,538,542,545,583,586,615,618,622,625,663,670,858,869,930,937,971,975,978,996,999,1003,1006,1047,1050,1081,1084,1095,1098],[397,398,306],"h2",{"id":399},"типы-данных",[401,402,403],"p",{},"Существуют разные способы представления данных в программах. Есть строки — наборы символов в кавычках вроде \"Hello World!\". Есть целые числа — например, 9, -100, 0.\nЭто две разные категории информации — два разных типа данных. Операция умножения имеет смысл для категории «целые числа», но не для категории «строки»: нет смысла умножать одно слово на другое.\nТип данных определяет, что можно делать с элементами конкретного множества информации.",[405,406,408],"h4",{"id":407},"примитивные-типы-данных","Примитивные типы данных",[401,410,411],{},"Язык программирования распознает типы данных, поэтому Python не позволит нам умножать строку на строку — нельзя умножать текст на текст.\nПри этом можно умножать целое число на другое целое число. Наличие типов и таких ограничений в языке защищает программы от случайных ошибок.\nВ отличие от строк, числа заключать в кавычки не нужно. Чтобы напечатать число 5, достаточно написать:",[413,414,419],"pre",{"className":415,"code":416,"language":417,"meta":418,"style":418},"language-python shiki shiki-themes github-light","print(9)  # => 9\n","python","",[420,421,422],"code",{"__ignoreMap":418},[423,424,427,431,435,438,441],"span",{"class":425,"line":426},"line",1,[423,428,430],{"class":429},"sYu0t","print",[423,432,434],{"class":433},"sgsFI","(",[423,436,437],{"class":429},"9",[423,439,440],{"class":433},")  ",[423,442,444],{"class":443},"sAwPA","# => 9\n",[401,446,447],{},"Число 9 и строка '9' — совершенно разные вещи, хотя вывод у print() для этих данных идентичный.\nВ Python целые числа (10, 35, -18 и т.д.) и рациональные числа (1.2, 1.0, -12.324 и т.д.) — это два отдельных типа данных.\nЭто разделение существует, несмотря на то, что и целые, и рациональные числа считаются вещественными числами.\nТакое разделение связано с особенностями устройства компьютеров. Есть и другие типы, о них позже.\nВот еще один пример, но уже с рациональным числом:",[413,449,451],{"className":415,"code":450,"language":417,"meta":418,"style":418},"print(1.234)  # => 1.234\n",[420,452,453],{"__ignoreMap":418},[423,454,455,457,459,462,464],{"class":425,"line":426},[423,456,430],{"class":429},[423,458,434],{"class":433},[423,460,461],{"class":429},"1.234",[423,463,440],{"class":433},[423,465,466],{"class":443},"# => 1.234\n",[401,468,469,470,474,475,478],{},"Типы данных «строка», «целое число» и «рациональное число» — это примитивные типы, то есть они встроены в сам язык Python.\nВ язык встроены также и некоторые составные типы. Программисты также могут создавать собственные типы данных.\nПо-английски строки в программировании называются strings, а строчки текстовых файлов — lines. Например, в коде выше есть строчка (line), но нет никаких строк (strings).\nВ русском иногда может быть путаница, поэтому будем говорить ",[471,472,473],"em",{},"строка"," для обозначения типа данных «строка» и ",[471,476,477],{},"строчка"," для обозначения строчек кода (lines) в файлах.\nPython — один из языков, который строго относится к типам данных. Поэтому на любую несовместимость типов он ответит ошибкой. Все дело в сильной типизации.",[480,481,483],"h3",{"id":482},"сильная-типизация","Сильная типизация",[401,485,486],{},"Нам известно про два типа данных: числа и строки. Например, мы могли складывать числа, потому что операция сложения — это операция для типа «числа».\nА что, если применить эту операцию не к двум числам, а к числу и строке?",[413,488,490],{"className":415,"code":489,"language":417,"meta":418,"style":418},"print(7 + '7')  # TypeError: unsupported operand type(s)...\n",[420,491,492],{"__ignoreMap":418},[423,493,494,496,498,501,505,509,511],{"class":425,"line":426},[423,495,430],{"class":429},[423,497,434],{"class":433},[423,499,500],{"class":429},"7",[423,502,504],{"class":503},"sD7c4"," +",[423,506,508],{"class":507},"sYBdl"," '7'",[423,510,440],{"class":433},[423,512,513],{"class":443},"# TypeError: unsupported operand type(s)...\n",[401,515,516],{},"Python не разрешит сложить число 7 и строку '7', потому что это значения разных типов. Нужно сначала либо сделать строку числом, либо число строкой.\nТакое отношение к совместимости типов называется сильной типизацией. Python — язык с сильной типизацией.\nНе все языки так делают. Например, JavaScript — это язык со слабой типизацией. Он знает о существовании разных типов, но относится к их использованию не очень строго.\nJavaScript пытается преобразовывать информацию, когда это кажется разумным. То же самое это относится к некоторым другим языкам, например, к PHP.",[413,518,522],{"className":519,"code":520,"language":521,"meta":418,"style":418},"language-javascript shiki shiki-themes github-light","\u002F\u002F Число 1 + Строка 7 = Строка 17\n1 + '7'; \u002F\u002F '17'\n","javascript",[420,523,524,529],{"__ignoreMap":418},[423,525,526],{"class":425,"line":426},[423,527,528],{},"\u002F\u002F Число 1 + Строка 7 = Строка 17\n",[423,530,532],{"class":425,"line":531},2,[423,533,534],{},"1 + '7'; \u002F\u002F '17'\n",[401,536,537],{},"Есть также языки со строгой типизацией, это когда тип данных нужно указывать при объявлении переменной, к ним относятся: C++, C#, Java и др.\nС одной стороны, автоматическое неявное преобразование типов и правда кажется удобным.\nНо на практике это свойство языка создает множество ошибок и проблем, которые трудно найти.\nКод может иногда работать, а иногда не работать — в зависимости от того, «повезло» ли с автоматическим преобразованием.\nПрограммист это заметит не сразу и потратит много времени на отладку.",[405,539,541],{"id":540},"неизменяемость-примитивных-типов","Неизменяемость примитивных типов",[401,543,544],{},"Представим, что нам нужно изменить символ в строке. Вот, что получится:",[413,546,548],{"className":415,"code":547,"language":417,"meta":418,"style":418},"name = 'Ваня'\nname[2] = 'р'\n# Ошибка: TypeError: 'str' object does not support item assignment\n",[420,549,550,561,577],{"__ignoreMap":418},[423,551,552,555,558],{"class":425,"line":426},[423,553,554],{"class":433},"name ",[423,556,557],{"class":503},"=",[423,559,560],{"class":507}," 'Ваня'\n",[423,562,563,566,569,572,574],{"class":425,"line":531},[423,564,565],{"class":433},"name[",[423,567,568],{"class":429},"2",[423,570,571],{"class":433},"] ",[423,573,557],{"class":503},[423,575,576],{"class":507}," 'р'\n",[423,578,580],{"class":425,"line":579},3,[423,581,582],{"class":443},"# Ошибка: TypeError: 'str' object does not support item assignment\n",[401,584,585],{},"Такое происходит из-за неизменяемости примитивных типов в Python — язык не дает никакой физической возможности поменять строку.\nНеизменяемость примитивных типов важна по многим причинам. Ключевая причина — производительность.\nНо иногда нам нужно изменить строку. Для этого и существуют переменные:",[413,587,589],{"className":415,"code":588,"language":417,"meta":418,"style":418},"name = 'Ваня'\nname = 'Варя'\nprint(name)\n",[420,590,591,599,608],{"__ignoreMap":418},[423,592,593,595,597],{"class":425,"line":426},[423,594,554],{"class":433},[423,596,557],{"class":503},[423,598,560],{"class":507},[423,600,601,603,605],{"class":425,"line":531},[423,602,554],{"class":433},[423,604,557],{"class":503},[423,606,607],{"class":507}," 'Варя'\n",[423,609,610,612],{"class":425,"line":579},[423,611,430],{"class":429},[423,613,614],{"class":433},"(name)\n",[401,616,617],{},"Есть большая разница между изменением значения переменной и изменением самого значения.\nПримитивные типы в Python поменять нельзя, а составные — можно. Также можно без проблем заменить значение переменной.",[405,619,621],{"id":620},"явное-преобразование-типов","Явное преобразование типов",[401,623,624],{},"В программировании регулярно встречаются задачи, когда один тип данных нужно преобразовать в другой — например, при работе с формами на сайтах.\nДанные формы всегда приходят в текстовом виде, даже если значение — число. Вот как его можно преобразовать:",[413,626,628],{"className":415,"code":627,"language":417,"meta":418,"style":418},"# str в int\nnumber = int('123')\nprint(number)  # => 123\n",[420,629,630,635,653],{"__ignoreMap":418},[423,631,632],{"class":425,"line":426},[423,633,634],{"class":443},"# str в int\n",[423,636,637,640,642,645,647,650],{"class":425,"line":531},[423,638,639],{"class":433},"number ",[423,641,557],{"class":503},[423,643,644],{"class":429}," int",[423,646,434],{"class":433},[423,648,649],{"class":507},"'123'",[423,651,652],{"class":433},")\n",[423,654,655,657,660],{"class":425,"line":579},[423,656,430],{"class":429},[423,658,659],{"class":433},"(number)  ",[423,661,662],{"class":443},"# => 123\n",[401,664,665,669],{},[666,667,668],"strong",{},"int()"," — это функция, в которую передается значение, чтобы его преобразовать.\nФункция ведет себя подобно арифметическим операциям, но выполняет особые действия. Вот еще несколько примеров:",[413,671,673],{"className":415,"code":672,"language":417,"meta":418,"style":418},"v = '0'\n# Внутри скобок можно указывать переменную\nv1 = int(v)\nprint(v1)  # => 0\n\n# Или конкретное значение\nv2 = int('10')\nprint(v2)  # => 10\n\nv3 = int(False)\nprint(v3)  # => 0\n\nv4 = int(True)\nprint(v4)  # => 1\n\n# Если преобразуется число с плавающей точкой, то отбрасывается вся дробная часть\nv5 = int(3.5)\nprint(v5)  # => 3\n",[420,674,675,685,690,702,713,720,726,743,754,759,776,786,791,808,819,824,830,847],{"__ignoreMap":418},[423,676,677,680,682],{"class":425,"line":426},[423,678,679],{"class":433},"v ",[423,681,557],{"class":503},[423,683,684],{"class":507}," '0'\n",[423,686,687],{"class":425,"line":531},[423,688,689],{"class":443},"# Внутри скобок можно указывать переменную\n",[423,691,692,695,697,699],{"class":425,"line":579},[423,693,694],{"class":433},"v1 ",[423,696,557],{"class":503},[423,698,644],{"class":429},[423,700,701],{"class":433},"(v)\n",[423,703,705,707,710],{"class":425,"line":704},4,[423,706,430],{"class":429},[423,708,709],{"class":433},"(v1)  ",[423,711,712],{"class":443},"# => 0\n",[423,714,716],{"class":425,"line":715},5,[423,717,719],{"emptyLinePlaceholder":718},true,"\n",[423,721,723],{"class":425,"line":722},6,[423,724,725],{"class":443},"# Или конкретное значение\n",[423,727,729,732,734,736,738,741],{"class":425,"line":728},7,[423,730,731],{"class":433},"v2 ",[423,733,557],{"class":503},[423,735,644],{"class":429},[423,737,434],{"class":433},[423,739,740],{"class":507},"'10'",[423,742,652],{"class":433},[423,744,746,748,751],{"class":425,"line":745},8,[423,747,430],{"class":429},[423,749,750],{"class":433},"(v2)  ",[423,752,753],{"class":443},"# => 10\n",[423,755,757],{"class":425,"line":756},9,[423,758,719],{"emptyLinePlaceholder":718},[423,760,762,765,767,769,771,774],{"class":425,"line":761},10,[423,763,764],{"class":433},"v3 ",[423,766,557],{"class":503},[423,768,644],{"class":429},[423,770,434],{"class":433},[423,772,773],{"class":429},"False",[423,775,652],{"class":433},[423,777,779,781,784],{"class":425,"line":778},11,[423,780,430],{"class":429},[423,782,783],{"class":433},"(v3)  ",[423,785,712],{"class":443},[423,787,789],{"class":425,"line":788},12,[423,790,719],{"emptyLinePlaceholder":718},[423,792,794,797,799,801,803,806],{"class":425,"line":793},13,[423,795,796],{"class":433},"v4 ",[423,798,557],{"class":503},[423,800,644],{"class":429},[423,802,434],{"class":433},[423,804,805],{"class":429},"True",[423,807,652],{"class":433},[423,809,811,813,816],{"class":425,"line":810},14,[423,812,430],{"class":429},[423,814,815],{"class":433},"(v4)  ",[423,817,818],{"class":443},"# => 1\n",[423,820,822],{"class":425,"line":821},15,[423,823,719],{"emptyLinePlaceholder":718},[423,825,827],{"class":425,"line":826},16,[423,828,829],{"class":443},"# Если преобразуется число с плавающей точкой, то отбрасывается вся дробная часть\n",[423,831,833,836,838,840,842,845],{"class":425,"line":832},17,[423,834,835],{"class":433},"v5 ",[423,837,557],{"class":503},[423,839,644],{"class":429},[423,841,434],{"class":433},[423,843,844],{"class":429},"3.5",[423,846,652],{"class":433},[423,848,850,852,855],{"class":425,"line":849},18,[423,851,430],{"class":429},[423,853,854],{"class":433},"(v5)  ",[423,856,857],{"class":443},"# => 3\n",[401,859,860,861,864,865,868],{},"Точно так же можно преобразовать данные в строки ",[666,862,863],{},"str()"," и число с плавающей точкой ",[666,866,867],{},"float()",":",[413,870,872],{"className":415,"code":871,"language":417,"meta":418,"style":418},"v1 = str(10)\nv2 = str(True)\nv3 = float(5)\nprint(v, v2, v3)  # '10' True 5.0\n",[420,873,874,890,904,920],{"__ignoreMap":418},[423,875,876,878,880,883,885,888],{"class":425,"line":426},[423,877,694],{"class":433},[423,879,557],{"class":503},[423,881,882],{"class":429}," str",[423,884,434],{"class":433},[423,886,887],{"class":429},"10",[423,889,652],{"class":433},[423,891,892,894,896,898,900,902],{"class":425,"line":531},[423,893,731],{"class":433},[423,895,557],{"class":503},[423,897,882],{"class":429},[423,899,434],{"class":433},[423,901,805],{"class":429},[423,903,652],{"class":433},[423,905,906,908,910,913,915,918],{"class":425,"line":579},[423,907,764],{"class":433},[423,909,557],{"class":503},[423,911,912],{"class":429}," float",[423,914,434],{"class":433},[423,916,917],{"class":429},"5",[423,919,652],{"class":433},[423,921,922,924,927],{"class":425,"line":704},[423,923,430],{"class":429},[423,925,926],{"class":433},"(v, v2, v3)  ",[423,928,929],{"class":443},"# '10' True 5.0\n",[401,931,932,933,936],{},"Некоторые преобразования Python выполняет автоматически. Например, в операциях, где встречаются одновременно целое число и число с плавающей точкой.\n",[666,934,935],{},"Python автоматически все приводит к float"," — числу с плавающей точкой:",[413,938,940],{"className":415,"code":939,"language":417,"meta":418,"style":418},"# Неявно выполняется код float(6) + 1.2\nv = 5 + 1.2\nprint(v)  # => 6.2\n",[420,941,942,947,961],{"__ignoreMap":418},[423,943,944],{"class":425,"line":426},[423,945,946],{"class":443},"# Неявно выполняется код float(6) + 1.2\n",[423,948,949,951,953,956,958],{"class":425,"line":531},[423,950,679],{"class":433},[423,952,557],{"class":503},[423,954,955],{"class":429}," 5",[423,957,504],{"class":503},[423,959,960],{"class":429}," 1.2\n",[423,962,963,965,968],{"class":425,"line":579},[423,964,430],{"class":429},[423,966,967],{"class":433},"(v)  ",[423,969,970],{"class":443},"# => 6.2\n",[405,972,974],{"id":973},"числа-с-плавающей-точкой","Числа с плавающей точкой",[401,976,977],{},"В математике существуют разные виды чисел. Например, натуральные — целые числа от одного и больше или рациональные — числа с точкой, например 0.3.\nС точки зрения устройства компьютеров, между этими видами чисел — пропасть.\nНапример, нам легко определить, сколько будет 0.1 + 0.2. А теперь посмотрим, что на это скажет Python:",[413,979,981],{"className":415,"code":980,"language":417,"meta":418,"style":418},"0.1 + 0.2  # 0.30000000000000004\n",[420,982,983],{"__ignoreMap":418},[423,984,985,988,990,993],{"class":425,"line":426},[423,986,987],{"class":429},"0.1",[423,989,504],{"class":503},[423,991,992],{"class":429}," 0.2",[423,994,995],{"class":443},"  # 0.30000000000000004\n",[401,997,998],{},"Сложение двух рациональных чисел внезапно привело к неточному вычислению результата.\nЭто объясняется ограничениями вычислительных мощностей. Объем памяти конечен, в отличие от чисел. Бесконечное количество чисел потребовало бы бесконечного количества памяти.\nРациональные числа не выстроены в непрерывную цепочку — между 0.1 и 0.2 бесконечное множество чисел.\nКак тогда хранить рациональные числа? В интернете много статей об организации памяти в таких случаях.\nБолее того, существует стандарт, в котором описано, как это делать правильно. На этот стандарт опирается большинство языков.\nРазработчикам важно понимать, что операции над числами с плавающей точкой неточны, но эту точность можно регулировать при работе с конкретными задачами.",[480,1000,1002],{"id":1001},"неизменяемость-и-примитивные-типы","Неизменяемость и примитивные типы",[401,1004,1005],{},"Иногда разработчикам нужно вернуть положительное значение числа, которое задано. Для этого в Python есть специальная функция.\nФункция abs() делает число неотрицательным:",[413,1007,1009],{"className":415,"code":1008,"language":417,"meta":418,"style":418},"balance = -100\namount = abs(balance)\nprint(amount)  # => 100\n",[420,1010,1011,1024,1037],{"__ignoreMap":418},[423,1012,1013,1016,1018,1021],{"class":425,"line":426},[423,1014,1015],{"class":433},"balance ",[423,1017,557],{"class":503},[423,1019,1020],{"class":503}," -",[423,1022,1023],{"class":429},"100\n",[423,1025,1026,1029,1031,1034],{"class":425,"line":531},[423,1027,1028],{"class":433},"amount ",[423,1030,557],{"class":503},[423,1032,1033],{"class":429}," abs",[423,1035,1036],{"class":433},"(balance)\n",[423,1038,1039,1041,1044],{"class":425,"line":579},[423,1040,430],{"class":429},[423,1042,1043],{"class":433},"(amount)  ",[423,1045,1046],{"class":443},"# => 100\n",[401,1048,1049],{},"На экран выведется 100. Но если вызвать print(balance), то на экран выведется старое значение: -100. Функция abs() вернула новые данные, но не изменила переданные в нее.\nОна не могла это сделать, потому что примитивные типы в Python — неизменяемы.\nНапомним, что примитивные типы — это простые типы данных, которые встроены в сам язык программирования. Например, число или строка.\nНикакие функции не смогут изменять данные примитивных типов. Число -100 — это значение переменной balance, и само число нельзя изменить.\nНо переменная называется переменной, потому что ее значение можно заменить на другое. То есть мы можем написать:",[413,1051,1053],{"className":415,"code":1052,"language":417,"meta":418,"style":418},"balance = -100\nbalance = abs(balance)\nprint(balance)\n",[420,1054,1055,1065,1075],{"__ignoreMap":418},[423,1056,1057,1059,1061,1063],{"class":425,"line":426},[423,1058,1015],{"class":433},[423,1060,557],{"class":503},[423,1062,1020],{"class":503},[423,1064,1023],{"class":429},[423,1066,1067,1069,1071,1073],{"class":425,"line":531},[423,1068,1015],{"class":433},[423,1070,557],{"class":503},[423,1072,1033],{"class":429},[423,1074,1036],{"class":433},[423,1076,1077,1079],{"class":425,"line":579},[423,1078,430],{"class":429},[423,1080,1036],{"class":433},[401,1082,1083],{},"Сначала в переменную записывается одно значение, а потом в ту же переменную вместо предыдущего значения записывается новое — то, что вернет вызов abs(balance).\nСтроку balance = abs(balance) можно прочитать так: «записать в переменную balance то, что вернет вызов функции abs(), если передать в нее текущее значение переменной balance».\nМы не изменили число, но изменили переменную — записали в нее новое число вместо старого.\nИзменение значения уже существующей переменной может показаться безобидным действием. Но в реальных программах перезаписывание переменной иногда становится источником проблем.\nКод с изменяемыми переменными сложно понимать и анализировать. Никогда нельзя быть уверенным, какое значение будет у переменной в определенный момент времени.\nНаверняка, вы регулярно сталкиваетесь с багами и ошибками в приложениях. Многие из них появляются, потому что изменили значения переменных.\nТакие ошибки сложно найти и исправить. Единственное место, где без изменения значений переменных никак — это циклы.\nВо всех остальных местах относитесь к переменным как к константам — неизменяемым сущностям. Создавайте переменные, задавайте им значения и больше не меняйте без необходимости.",[401,1085,1086,1087,1090,1091,1094],{},"Попробуйте сами запустить код в окне ниже с интерпретатором Python и повторите примеры из статьи чтобы самим увидеть и понять как всё это работает.\nДля этого в ячейке с кодом нажмите клавиши на клавиатуре ",[666,1088,1089],{},"Shift+Enter"," или запустите код через ",[666,1092,1093],{},"кнопку Run"," по значку ▶.",[1096,1097],"jypiter",{},[1099,1100,1101],"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 .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}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}",{"title":418,"searchDepth":531,"depth":715,"links":1103},[1104],{"id":399,"depth":531,"text":306,"children":1105},[1106,1107,1112],{"id":407,"depth":704,"text":408},{"id":482,"depth":579,"text":483,"children":1108},[1109,1110,1111],{"id":540,"depth":704,"text":541},{"id":620,"depth":704,"text":621},{"id":973,"depth":704,"text":974},{"id":1001,"depth":579,"text":1002},"2025-01-25","Типы данных. Изменяемость данных","md","images\u002Fblog\u002Fpython\u002Fst4\u002Fimg.png",{},{"title":306,"description":1114},"XtfK7hGtVi1oYoOZnnxryO8Efs-HkRNaqqj5vbY9ZVo",[1121,1123],{"title":278,"path":279,"stem":280,"description":1122,"children":-1},"Интерполяция. Извлечение символов из строки. Срез строки",{"title":310,"path":311,"stem":312,"description":1124,"children":-1},"Использование готовых функций. Приём и возврат значений функций. Свойства функций",1780737507860]