[МУЗЫКА] [МУЗЫКА] Посмотрим, какие еще операции можно выполнять с числами на Python. Вот наша программа, но она бесполезна, поэтому мы можем ее удалить, не создавать проект заново, а писать поверх. Когда вы сдали задачу, чтобы каждый раз не создавать проект заново, можно именно так и поступать. Хотя тогда ваши решения потеряются, может быть, вы будете дорожить ими, и тогда имеет смысл сохранять их под разными именами. Итак, наша цель сейчас понять, какие еще арифметические операции можно делать. Пока что мы пользовались только операцией «плюс». Давайте выпишем их более-менее все и напечатаем. Например, на одних и тех же числах, 11 и 6, хорошие числа. Итак, мы написали print (11 + 6). Мы ожидаем, что нам выведется 17, проверим на всякий случай, вдруг нет. Запустили, посмотрели, да, 17. Отлично. Теперь посмотрим, какие еще операции существуют. Конечно же, операция «минус» в Python есть. Есть операция «умножить», которая обозначается звездочкой. Теперь более хитрые вещи — это возведение в степень. Возведение в степень — это две звездочки подряд записаны. Не путайте с крышечкой, иногда так любят обозначать, это имеет немного другой смысл, надо запомнить. Обратите внимание, как я пишу. Я аккуратно расставляю пробелы возле каждой операции, но вокруг операции возведения в степень можно не ставить. Почему? Потому что люди привыкли, что возведение в степень числа какого-то, там нет никаких пробелов, когда пишут на бумаге, их не ставят. Здесь можно их тоже не ставить. Отлично. Давайте посмотрим, что у нас пока что получается. Итак, 11 + 6 = 17, 11 − 6 = 5, 11 * 6 = 66, а вот 11 в 6-й степени мы в уме уже не посчитали бы, а Python смог легко посчитать. Отлично. Есть еще операции. Деление. Деление нацело. Пока что мы пользуемся только целыми числами. Что такое целые числа, я надеюсь, вы понимаете. Что такое не целые числа — это, например, 2,5 или число π какое-то или еще что-то. Мы пока что используем только целые числа, и деление наше целочисленное. Что такое целочисленное деление, прямо сейчас и посмотрим. Мы сделали 11 разделить на 6. Разделить — это два слеша. Это именно для целочисленного деления, другого пока не используйте. Запускаем и смотрим: 11 разделить на 6 получилось 1. Что это означает? Это означает, что целая часть от деления 11 на 6 — это 1. Если бы мы, например, 12 разделили на 6, то получим уже 2 — целая часть от деления. То есть, если число разделилось нацело, то получается ровно то, что мы ожидаем. Если же оно не делится нацело, например, как у нас было с 11 делить на 6, то результат как бы округляется вниз, остается только целая часть от деления. И еще одна очень полезная штука, это остаток от деления. Давайте я верну 11, чтобы у нас все было одинаково. Остаток от деления обозначается символом %. Посмотрим, чему он равен, а потом подумаем, зачем он нам нужен. Он равен 5, что это означает? Если мы целую часть от деления умножим на делитель, 1 умножим на 6, и прибавим остаток, то получится ровно наше число, 6 + 5 = 11. Подробнее об этом будет в конце лекции, пока что мы будем чисто практически использовать это знание. Итак, вот они наши шесть операций. Надеюсь, вы запомнили: плюс, минус, умножить, возведение в степень, разделить и остаток от деления. Я их убираю, чтобы мы могли играть с остатком от деления. Редко в жизни, казалось бы, используется остаток от деления. Это где-то в младшей школе все выучили и успешно забыли. Если немного подумать, то остаток от деления большинство людей используют чуть ли не каждый день. Самый простой пример это время, сутки. В сутках 24 часа. Допустим, сейчас 23:00. Давайте я сразу буду печатать. Итак, сейчас 23 часа. А сколько времени покажут часы через, например, 8 часов? Мы легли спать, хотим понять, когда нам ставить будильник. Если мы просто напишем: 23 + 8 и запустим программу, то мы получим 31. Часы 31 не показывают. Но что показывают часы? Что-то от 0 до 23. Если мы сейчас посчитаем остаток от деления на 24. В сутках 24 часа, мы берем и считаем остаток от деления на 24. Посмотрим, что у нас получится, оно вывело 7. То есть если сейчас 23:00, мы проводим 8 часов во сне, то когда мы просыпаемся, время будет 7 утра, часы покажут 7. Вот для чего оно нужно. Посмотрим, еще какие операции мы можем сделать с помощью остатка. С тем же временем мы можем не складывать, а вычитать. Давайте посмотрим, что было за 8 часов до 7 утра. Итак, начальное время теперь вместо 23 становится 7, и мы вычитаем 8. Опять же, считаем остаток от деления 24. Запускаем, 23 часа. Все ровно так, как мы и ждали. Подробнее о свойствах остатков, как я уже говорил, мы посмотрим позже, но пока что можно представлять себе как раз вот эти часы на все случаи жизни. Просто в некоторых задачах, которые вам предстоит решить, эти часы будут иметь не 24 часа, а несколько больше. Тем не менее, такой подход позволит вам понимать, что у вас получится в результате и использовать этот эффект для решения задач. Теперь перейдем к более хитрым вещам. Как вы понимаете, арифметические выражения могут быть очень-очень большие, длинные. Если вы недавно учились в школе или учитесь в университете, то, возможно, вы помните задачи школьные по физике, где у вас существует несколько каких-то параметров. В самом простом случае, который мы сейчас посмотрим, у нас есть скорость и время, с которой автомобиль или еще что-то двигалось. И нужно понять, какое расстояние этот автомобиль прошел. В физике мы разбивали вычисления на части, сначала посчитали один кусочек какой-то и потом уже пользовались тем результатам, который у нас есть, не переписывая заново очень длинное уравнение. В Python для хранения промежуточных результатов можно создавать переменные. Мы просто пишем какое-то название. Главное, чтобы оно не совпадало с названием стандартной функции, то есть нельзя назвать переменную «print», например. В нашем случае осмысленное название «скорость». Как у нас ездят по дорогам со скоростью 108 км/ч, чтобы штраф не взяли. Представим себе, что мы ехали с такой скоростью в течение 12 часов. Я создал две переменные: скорость и время. Как создаются переменные? В отличие от других языков программирования, которые, возможно, вы знаете, нам не нужно говорить, что заранее у нас есть переменные с таким-то названием, такого-то типа. В Python, как только вы ее создаете, так она и появляется, и никакого типа писать не нужно. Почему? Потому, что здесь понятно, мы кладем туда число, естественно, у нее числовой тип. Итак, имя переменной пишется слева, затем значок «равно», и затем что туда нужно положить. Пока что мы положили туда только числа. Теперь посмотрим, что еще можно сделать. Итак, вот наш ответ, переменная dist, distance, расстояние, которое мы прошли. Расстояние — это время умножить на скорость. Так и записываем: time * speed. Теперь мы можем использовать наши переменные в арифметических выражениях и напечатаем наш ответ. Запускаем, за 12 часов со скоростью 108 км/ч мы проедем 1296 километров. Понятно, что выражения могут быть намного сложнее. Опять же, к тем же задачам по физике, если у вас какой-то сложный физический процесс происходит, то там бывают иногда огромные выкладки. В Python мы можем все это реализовать, сохраняя промежуточные результаты. Переменные лучше называть осмысленно, потому что со временем ваша программа будет разрастаться, и понять, что обозначают какие-то буковки, которые вы использовали, будет очень сложно. Если название осмысленное, то можно будет взглянуть и сразу вспомнить, что же вы там делали. Особенно это удобно, если вы читаете чужой код или пишете какой-то код, который будут читать другие люди. Программирование — это командная работа, нельзя взять и написать какой-то там код с непонятными названиями, забыть его, чтобы он работал 100 лет. Все время вы или кто-то другой возвращаются к нему, читают, исправляют ошибки, и поэтому лучше, чтобы он был оформлен красиво. Кроме того, в Python можно использовать скобки. Точно так же, как в обычной математике, операция имеет приоритет. Самый большой приоритет у операции возведения в степень. Чуть поменьше приоритет у умножения и деления, они одинаковые. И, наконец, после этого идет сложение и вычитание. Если бы мы хотели использовать что-то более сложное, например, наш спидометр показывает 108, но мы знаем, что он немножко подвирает. Например, показывает на 5 километров больше. Мы можем взять −5, сделать переменную, которая будет компенсировать как раз реальность. Минус унарный, пишется непосредственно перед числом. Теперь мы хотим посчитать, сколько же на самом деле мы проехали километров. Для этого мы пишем арифметическое выражение, складываем скорости между собой и умножаем на время уже сумму скоростей. Чтобы все посчиталось правильно, мы окружаем сложение скоростей скобками, тогда приоритет у сложения будет выше. Посмотрим, что получилось. Проверить я это так просто не могу, будем надеяться, что Python считает правильно. В следующем фрагменте мы научимся работать не только с числами, но и со строками, с ними тоже можно делать некоторые интересные операции. [МУЗЫКА] [МУЗЫКА]