Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 7375 / 1136 | Длительность: 09:49:00
Авторские права: Creative Commons Attribution 3.0

Лекция 2: Переменные, выражения и инструкции (Variables, expressions and statements)

2.4. Операторы

Инструкции (statement) – это единица измерения кода, которую интерпретатор Python может выполнять. Мы уже встречались с двумя видами инструкций: print (вывод на экран) и присваивание.

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

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

Например, выполнение скрипта:

print 1
x = 2
print x

приводит к результату

1
2

Инструкция присваивания ничего не выводит на экран.

2.5. Операторы и операнды

Операторы (operators) – специальные символы, которые представляют вычисления, наподобие сложения и умножения. Значения, к которым применяется оператор, называются операндами (operands).

Операторы +, -, *, / и ** выполняют соответственно сложение, вычитание, умножение, деление и возведение в степень:

20+32 
hour-1 
hour*60+minute 
minute/60 
5**2 
(5+9)*(15-7)
0

Операция деления может привести к неожиданным результатам:

>>> minute = 59
>>> minute/60
0

Значение переменной minute равно 59, операция деления 59 на 60 приведет к результату 0.98333, а не к нулю! Причиной подобного результата в Python является округление (floor division).

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

http://python-history.blogspot.com/2010/08/why-pythons-integer-divisionfloors.html

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

Если какой-либо из операндов является числом с плавающей точкой, то результат тоже будет типа float:

>>> minute/60.0
0.9833333333333333

В новой версии Python 2.0, результат деления целочисленных значений будет числом с плавающей точкой.

2.6. Выражения

Выражение (expression) – это комбинация значений, переменных и операторов. Значение (или переменная) само по себе является выражением, поэтому все следующие выражения являются корректными (предполагается, что переменной x было присвоено значение):

17
x
x + 17

Если выражения вводятся в интерактивном режиме, то интерпретатор вычисляет (evaluates) их и отображает результат:

>>> 1 + 1
2

В скрипте подобное выполняться не будет. Вывод результата без использования print, работает только в интерактивном режиме Python!

2.7. Порядок операций

Если в выражении встречается больше, чем один оператор, то порядок вычислений зависит от правил старшинства (rules of precedence). Для математических операций, Python следует математическим соглашениям. Аббревиатура PEMDAS является простым способом для запоминания правил:

  • Скобки (Parentheses) имеют наивысший приоритет и могут использоваться для принудительного определения порядка вычислений в выражении. Таким образом, результат выражения 2*(3-1) будет равен 4, (1+1)**(5-2) будет равен 8. Вы также можете использовать скобки для упрощения чтения выражений, например, (minute*100) / 60, если это не повлияет на результат.

  • Возведение в степень (Exponentiation) имеет наибольший приоритет, так 2**1+1 равно 3, а не 4, и 3*1**3 равно 3, а не 27.

  • Умножение и деление (Multiplication and Division) имеют одинаковый приоритет, который выше сложение и вычитания (Addition and Subtraction), которые также имеют одинаковый приоритет. Таким образом, 2*3-1 равно 5, а не 4, и 6+4/2 равно 8, а не 5.

  • Операторы с одинаковым приоритетом вычисляются слева направо. Таким образом, 5-3-1 равно 1, а не 3.

Если вы сомневаетесь, то поставьте скобки.

2.8. Модульные операторы

Модульные операторы работают с целочисленными значениями и возвращают остаток от деления (yields the remainder) двух операндов. В Python модульный оператор представлен символом (%). Синтаксис у него следующий:

>>> quotient = 7 / 3
>>> print quotient
2
>>> remainder = 7 % 3
>>> print remainder
1

Модульный оператор может быть очень полезен, если вы хотите проверить делится ли x на y без остатка – если x % y равно 0.

Также, вы можете извлечь самую правую цифру или цифры из числа. Например, x % 10 вернет самую правую цифру числа x (по основанию 10).

Алексей Виноградов
Алексей Виноградов

Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе.

Петр Олейников
Петр Олейников

Данные файлы неоходимы не только для самостоятельных работ, но и для тестов. А по ссылкам в лекциях они не доступны, выдает ошибку 404.