8-Lesson №25

Урок №25. Программирование линейных алгоритмов.

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

Для основных арифметических операций в языке Python используются те же обозначения, что и в других языках программирования:

+ — сложение;             — — вычитание;

* — умножение;           / — деление.

Кроме того, есть ещё операция возведения в степень, которая обозначается как **. Например, х3 записывается как х**3.

Сначала рассмотрим операции с одной переменной. Оператор присваивания

i = i + 1

заменяет значение i на i + 1, т. е. увеличивает значение переменной i на 1. Эта операция часто используется для увеличения специальных переменных-счётчиков, с помощью которых считается количество каких-то событий (например, щелчков мышью) или объектов (например, количество собранных призов в игре).

Более сложное присваивание

запишется в программе так:

а = (с + b - 1)/2*d

Это линейная запись арифметического выражения (запись в одну строку).

Длинное выражение можно перенести на следующую строку с помощью символа \:

а = х*(2*с + 4*b - 8*f) \
   + 2*а*с

При переносе внутри скобок символ \ вставлять не обязательно:

а = (с + 5
      - 1) /2*d

Эти правила переноса справедливы и для других операторов языка Python.

Порядок выполнения действий определяется приоритетом (старшинством) операций:

  • сначала выполняются действия в скобках;
  • затем — возведение в степень, справа налево, т. е. 2**3**2 — это то же самое, что и 2** (3**2);
  • потом — умножение и деление, слева направо;
  • в конце — сложение и вычитание, слева направо.

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

Например, в выражении

а = (с + b - 1)/2*d

сначала выполняются действия в скобках: сложение и затем вычитание; потом — деление на 2 и напоследок — умножение на d.

В языке Python разрешено множественное присваивание. Запись

a, b = 1, 2

равносильна паре операторов присваивания:

а = 1 
b = 2

При этом считается, что эти два действия происходят параллельно, т. е. одновременно. Если двум переменным присваивается одно и то же значение, можно применить множественное присваивание «по цепочке»:

а = b = 0

Это равносильно паре операторов присваивания

b = 0
а = b


При изменении значений переменных удобно использовать сокращённую запись арифметических операций.

Если в выражение входят переменные разных типов, в некоторых случаях происходит автоматическое приведение типа к более «широкому». Например, результат умножения целого числа на вещественное — это вещественное число. Переход к более «узкому» типу автоматически не выполняется. Нужно помнить, что результат деления (операция «/») — это вещественное число, даже если делимое и делитель — целые и делятся друг на друга нацело.

Результат деления (операция «/») может быть нецелым числом, такие числа называются вещественными. Часто нужно получить целый результат деления целых чисел и остаток от деления. Например, известен интервал времени в секундах (скажем, 289 секунд) и нужно определить, сколько в нём целых минут и оставшихся секунд (289 с = = 4 мин 49 с). Здесь число минут 4 — это целая часть от деления 289 на 60, а 49 секунд — это остаток от этого деления.

В таких случаях используют специальные операторы:

// — деление нацело (с отбрасыванием остатка);

% — взятие остатка от деления.

Вот как выглядит программа, которая выделяет целые минуты и секунды (от 0 до 59) из интервала времени в секундах:

timeSec = 289
minutes = timeSec //60                   # = 4
seconds = timeSec % 60                   # = 49

С помощью этих операций удобно работать с отдельными цифрами числа. Остаток от деления числа на 10 — это последняя цифра его десятичной записи:

N = 123
lastDigit = N % 10                             # = 3

Если разделить число на 10 и взять только целую часть, мы «отбросим» последнюю цифру числа: значение 123 // 10 равно 12:

N = 123
digits2 = N // 10                                 # = 12

Интересен результат выполнения операций / / и % для отрицательных чисел. Программа

print ( -7 // 2 )
print ( -7 % 2 )

выводит на экран числа -4 и 1. Дело в том, что с точки зрения теории чисел остаток — это неотрицательное число, поэтому

-7 = (-4)•2 + 1

т. е. частное от деления -7 на 2 равно -4, а остаток равен 1. В языке Python (в отличие от многих других языков, например Паскаля и C++) эти операции выполняются математически правильно.

Выполнить домашнюю работу

Выполнить классную работу