pyth_02_vars
Заметка 2. Арифметические выражения.
курса Математический практикум по Питону.
Шокуров Антон В.
shokurov.anton.v@yandex.ru
http://машинноезрение.рф
Версия 0.21

Аннотация

Вводятся базовые элементы питона (Python версии 3.xx): переменные, условные переходы, циклы и ввод/вывод. Вводятся некоторые важные методы объекта строка (str) как для всяких проверок, так и для приведение строки к определенному виду. Последнее важно для обработке текстовых данных в задачах машинного обучения.

Это предварительная версия! Любые замечания приветствуются.

К программированию

Переменные

Взаимодействие с переменными

Создание переменных

Главная особенность понятия кодинга/программирования это наличие переменных -- сущность позволяющая сохранить значение вычисления.

Вычисляем очередное выражение. Но главное в другом.

Можем вывести значение переменной явно, т.е. фактически значение которое туда было ранее помещено.

Таким образом, можно выполнять вычисления с переменными. В данном случае будет использоваться ранее сохраненное значение в переменной. Вместо переменной в выражение будет подставлено её значение и выражение вычислиться как обычно.

Много переменных

Данное понятие можно "размножить". Можно ввести много переменных.

Переменная как коробка с именем. В неё можно положить что-то и оно там останется пока не будет положено что-то новое. При этом у коробки есть имя, т.е. коробок много и все со своим уникальным именем.

Переменных естественно может быть много. Их имена могут быть длинными, но с некими ограничениями. Но не будем об этом.

Присвоение значения выражения

Присвоем переменной значение выражения.

Интернациональность

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

Первое использование

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

Значения выражения

Значение тетрадного блока кода

Напомню

Присвоение не поменяет значения _

Сохраняется значение, которое было именно выведено.

Точка с запятой тоже блокирует вывод вычисления.

Еще раз про функцию print

Можно комбинировать вывод строчек и чисел.

Квадратное уравнение

Вычислим дискриминант

Тринарный оператор с переменными

Большее из чисел

Упражнение Вывести минимум из трех чисел записанных в переменные a, b, c.

Строковые значения

Строку конечно же можно сохранить в переменную

Тогда верно

Обновление значения

Новое значение переменной

Не менее важно и, что переменной можно, ествественно, присвоить новое значение выражения. Если переменная ранее не существовала, то она создается. Если она уже существовала, то она забывает свое прошлое значение, и получает новое.

Более того, переменной значение можно переприсвоить (сохранить новое значение).

Придает переменной a опять новое значение, старое забывается.

Многоликость

Одну и туже переменную конечно можно использовать и справа и слево от равенста. Важно понимать: сначала вычисляется зачение правой части, потом данное значение присваивается левой, где подразумевается переменная (иначе будет ошибка).

Блок можно выполнять нескоко раз, для этого его нужно щелкнуть и заново нажать кнопку проигрывателя (или нажать shift-enter). Попробуй это сделать с блоком содержащем строчку "a = a + 1" При каждом новом выполнении значение блока будет менятся.

В левой части должна быть переменная.

Абсолютная величина

Последнее позволяет вычислить абсолютную величину не прибегая к доп переменным.

Попробуем с другим значением a

Тип переменной

Переменная хранит некое значение, а значит с ней связан и тип (хранимого значения): целое, вещественное число, строчка и тому подобное.

Отмечу, что в других языках сначала объявляется переменная нужного типа, а потом присваивается ей значение. Иначе не получиться. В питоне иначе. Переменная создается (если нужно) в момент присвоения ей значения.

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

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

Нет мусорного значения в переменой как в некоторых других языках программирования.

Итого, в переменую сохранаяется как значение, и как следствие и её тип.

Отмечу, что при присвоении переменная забывает не только свое значение, но и свой тип.

Итого, в первом случае тип был целочисленым (int), а во втором вещественный (плавающая точка, float)

Упражнение Как за счет преобразования типов и арифметических действий получить дробную часть числа?

Важно понимать, что система как в таких простых случаях, так и в более сложных ругатся не будет. Она такое присвоение со сменой типа разрешит (во многих других языках так нельзя). Это важно, когда появяться более сложные выражения.

Хранится значение!

Подчеркну ещё раз, что в переменную записывается значение выражения, а не само выражение (как формула), которое это значение выдало. Покажу это на характерном прмере.

Множественное присвоение

В несколько строчек

Вычисления можно делать в каждой строке, но смысла в этом мало. Только последнее значение будет выведено и сохранено в _.

Можно в каждой строке сделать отдельное присвоение.

Вернемся к квадратному уравнению

Вычислим дискриминант

Можно строчки неоднократно повторять.

Параллельное присвоение

Одновременный вывод выражений.

Покажу как можно присваивать значения в параллель.

По аналогии чтобы вывести значения переменных пишем:

Можно тоже самое проделать и для более сложных выражений.

Упр. Поменяй значения у двух переменных: имеем две переменные (например, a и b), нужно сделать так, чтобы значение переменной a было рано прошлому значению переменной b, а переменная b была равна прошлому значению переменной a. Подсказка... традиционно для этого используют ещё одну переменную. Если хочешь усложнить, то реши без дополнительной переменной. Реши чисто питоновки и обычным способом.

Вернемся к квадратному уравнению

Но, так нельзя

Таким образом, при присвоении сначала считаются все значения (с правой стороны), а потом уже выполняется присвоение.

Ввод/вывод

Вывод

Многострочный вывод

Напомню, можно узнать длину строки, т.е. количество символов в её представлении.

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

Такие свойство можно использовать, например, при создании таблиц.

Строки и числа

Выведем строк и число без print

Ввод

Попробуем выполнить вычисление.

Выведем тип переменной.

Нужно выполнить явное преобразование типа. Наподобие того, что ранее было с булевским типом.

Можно и из строки сделать число.

Не всякую строку можно преобразовать к числу.

Функции иногда даже для допустимого типа могут выдать ошибку.

Ветвление

Условный переход

Использование ветвления, "блок если". Выполняется блок кода при истинности проверяемого условия.

Вычислим абсолютную величину.

Вычислим действительные корни квадратного уравнения.

Добавим иначе

У данной конструкции есть и блок кода который выполняется "иначе", т.е. при не выполнении проверяемого условия.

Можно сохранить результат в туже переменную.

Вернемся к квадратному уравнению с другим c

Иначе если

Упражнение Решите линейное уравнение ax+b=0 с учетом всех возможных исходов.

Пока истинно

Данный блок выполняется пока истинно условие.

Повторяем два предыдущих блока пока не найдем делитель.

А можем сразу так сделать

Алгоритм Евклида

Ключевое слово "продолжение" (continue). Выполняет переход на самое начало цикла (до проверки условия).

Через двойной цикл

Экстренный выход из цикла

Иначе для пока истинно

Когда мы выходим их цикла именно по break необязательно проверять условия цикла для понимания того почему именно цикл завершился. В Питоне есть ветка else, которая выполняется только при выходе по нарушению условия цикла.

Вычисление квадратного корня их числа.

При повторном срабатывании цикла мы выйдем из цикла по счетчику и else не сработает.

Упражнение Напишите код (цикл) определяющий простоту числа.

Методы объекта

Объект complex

Метод объекта

Функция принадлежащая объекту. Иначе говоря, она вызывается для объекта.

Атрибуты

Атрибуты. Значение внутреннего представления.

Обычно внутреннее представление стараются сохранить. В объектно ориентированном подходе это называют инкапсуляцией.

В данном случае изменить число можно только создав новый объект.

Стандартные типы

На самом деле и для int и float можно какие то подобные фокусы делать.

Методы строк

Интегральные базовые проверки

Интегральость обозначает, что что-то делается для всех. В данном случае выполняется та или иная проверка.

Если истинно утверждение для всех символов строки, то итоговы ответ истинен. Иначе ложь.

Все ли символы явлются буковй?

Истина тогда и только тогда когда строчка состоит из цифр.

Наличие одного не того символа достаточно для ложного ответа.

Корректный ввод

Рассмотрим как данные методы объекта str можно применять при вводе информации. В частности, проверять что строка соответствует числу или наоборот строке букв.

Упражнение Определите среднюю длину введенных имен. Ввод завершается, когда вводится не имя.

Преобразования

Данные методы выполняют преобразование строчки согласно определенному правилу.

Нормализация строк

Приведение к единой форфме записи. В частности, полезно для машинного обучения.

Самостоятельно изучите эти тонкости.

Да/нет

Покажем важность нормализации на примере проверки ввода слова да или нет.

Так ненадежно

Ничего не определили.

Даже так

Лучше так

Сохранила значение до преобразования.