Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4653 / 500 | Длительность: 21:48: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).

Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Андрей Микульский
Андрей Микульский
Молдова, Республика, Комрат, Комратский Государственный Университет