Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Python.docx
Скачиваний:
72
Добавлен:
19.05.2015
Размер:
116.84 Кб
Скачать

Арифметические выражения

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

  • сложение – символом +;

  • вычитание – символом -;

  • умножение – символом *;

  • деление – символом /.

Арифметические выражения с этими операциями записываются так, как это принято в математике.

>>> print( 1+2, 3-4, 5*6)

3 -1 30

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

>>> print (2**10)

1024

Среди арифметических операторов следует обратить внимание на деление. В третей версии Pythonрезультат деления всегда имеет типfloat17.

>>> print( 4/2, 4.0/2.0, 4.0/2, 4/2.0)

2.0 2.0 2.0 2.0

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

>>> print(1+2*4, 4.0-5.0/6.0,7*8+9*10)

9 3.1666666666666665 146

Для того, чтобы в результате обработки выражения 1+2*4мы получили ожидаемое по школе значение,Pythonдолжен каким-то образом понимать, что сначала необходимо выполнить оператор умножения, а затем сложения, а не наоборот. Порядок выполнения операторов определяется ихприоритетом.

В языке Pythonиспользуется следующий приоритет математических операторов. Наивысший приоритет имеют круглые скобки – это позволяет использовать их в выражениях так же, как в школьной математике. Затем выполняется оператор возведения в степень. Следующими выполняются операторы умножения и деления. Они имеют одинаковый приоритет и если несколько из них следуют друг за другом, то они выполняются слева на право. В последнюю очередь выполняются операторы сложения и вычитания, которые тоже имеют одинаковый приоритет.

Операторы +и-имеют такжеунарнуюформу: они могут быть применены к одному аргументу. При этом оператор-меняет знак аргумента, а + – ничего не делает.

>>> +(-3)

-3

>>> -(-3)

3

>>> +3

3

>>> -3

-3

Приоритет унарной формы этих операторов отличается, от бинарной: они выполняются после возведения в степень и до умножения и деления.

Подводя итог, можно сказать, что арифметические выражения в Pythonзаписываются так же, как в школьной математике, и имеют такой же смысл18.

Переменные

Pythonпозволяет запоминать результат вычислений впеременной. Зачем может потребоваться запоминать значение выражения?

Во-первых, выражение может быть большим, а его результат может потребоваться нам несколько раз. Набирать каждый раз сложное выражение неудобно19, и это противоречит идее повторного использования кода. Если выражение один раз записано в программе, не следует второй раз писать то же выражение, если вычисление имеет тот же смысл20. Следует или сохранить вычисленное значение в переменной для последующего использования (если исходные аргументы для выражения не меняются) или выделить вычисление в отдельную функцию (если требуется вычислить то же значение для других аргументов). В некоторых случаях применяют оба метода.

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

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

Итак, в Pythonпеременная это именованная область памяти (часть внутреннего состояния программы), в которой может храниться значение определённого типа. ВPythonимя переменной может состоять из букв, цифр и символа нижнего подчёркивания _. При этом, имя переменной не может начинаться с цифры. Начиная с третьей версииPythonв именах переменных можно использовать буквы не только из латинского алфавита, в том числе и русские буквы.

Примерами корректных имен являются:

  • Ninja;

  • ninja;

  • n_i_n_j_a;

  • ninja_2014;

  • площадь.

Недопустимыми именами являются:

  • 2014_ninja;

  • 12345.

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

  • elite_ninja;

  • ninja_2100.

Категорически не рекомендуется использовать в качестве имен переменных одиночные буквы: l(строчная английская Эль),О(прописная английская О), иI(прописная английская Ай). Так как в некоторых шрифтах их можно перепутать с цифрамии, а в других – первую с последней.

Продолжая поддерживать запись выражений в стиле школьной алгебры, Pythonдля присвоения значения переменной использует оператор= 21.

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

>>> my_year=1

>>> print(my_year)

1

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

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

>>> my_year=my_year+1

>>> print(my_year)

2

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

>>> my_year=1

>>> print(my_year)

1

>>> my_year+=1

>>> print(my_year)

2

>>> my_year+=2

>>> print(my_year)

4

Аналогичным образом работают операторы -=, *=, /= и **=.

>>> a=2

>>> a**=3

>>> print(a)

8

Рассмотрим пример перевода значения температуры в шкале Фаренгейта в шкалу Цельсия. Формула для преобразования

>>> temp_Fahrenheit=451

>>> temp_Celsuis=5/9*(temp_Fahrenheit-32)

>>> print(temp_Celsuis)

232.7777777777778

Теперь мы знаем, что бумага горит при температуре около 233°С (по крайней мере, если верить Рею Бредбери). Обратное преобразование осуществляется по формуле Посмотрим, при какой температуре по Фаренгейту кипит вода.

>>> temp_Celsuis=100

>>> temp_Fahrenheit=9/5*temp_Celsuis+32

>>> print(temp_Fahrenheit)

212.0

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

>>> queue_len=5

… позднее…

>>> qeue_len=0

… ещё позднее …

>>> queue_len+=1

>>> print(queue_len)

6

В приведённом фрагменте кода при присваивании qeue_len=0программист допустил опечатку в имени переменной. ОднакоPythonпосчитал эту команду как правильную команду создания новой переменной и не выдал сообщения об ошибке или предупреждения. Когда программист снова обратился к этой переменной, он обнаружил там совсем не то значение, которое ожидал увидеть. Найти такую ошибку может быть очень не просто.

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

>>> variable=5

>>> print(type(variable))

<class 'int'>

>>> variable/=2

>>> print(type(variable))

<class 'float'>

>>> print(variable)

2.5

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]