Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії


Головна Програмування - Python Оператори і вирази в Python

Оператори і вирази в Python
Написав Invader   
Неділя, 02 грудня 2012 17:00
Переглядів: 34201

Вступне слово

Більшість інструкцій (логічні рядки) у твоїй програмі будуть містити вирази. Простим прикладом виразу є вираз 2 + 3. Вираз можна розділити на оператори(дії) і операнди(сталі чи змінні, над якими виконуються дії).

Оператори функціонально призначені робити щось(виконувати дії над чимось) та  представлені символами такими як + або спеціальними ключовими словами. Операторам потрібні якісь дані для того, щоб мати можливість над чимось працювати. Такі дані називаються операндами. У цьому випадку числа 2 і 3 є операндами.

Оператори

Ми зараз швидко оглянемо тему операторів і їх використання.

Зауваж, що ти можеш вичислити вираз з цього прикладу використовуючи інтерпретатор в інтерактивному режимі. Наприклад, для обчислення виразу 2+3 запусти інтерпретатор і напиши:

 >>> 2 + 3
5
>>> 3 * 5
15
>>>

 

Оператор Назва Пояснення Приклади
+ Плюс Додає два об’єкта. А також конкатенація для типу даних string 3+5 дає 8. 'a'+'b' дає 'ab'
- Мінус Або дає число зі знаком - або віднімає одне число від іншого -5.2 дає негативне число. 50-24 дає 26
* Множення Це або операція множення або операція "розмноження" для рядкового типу.Поверне рядок повторений задану к-ть разів 2*3 дорівнює 6. 'la'*3 дає 'lalala'
** Піднесення до степені Повертає x в степені y 3 ** 4 дає 81 (іншими словами 3 *3 * 3 * 3)
/ Ділення Розділити x на y 4/3 дає 1.3333333333333333
// Цілочислове ділення Повертає цілочисельну частку від ділення 4//3 дає 1
% Ділення по модулю Повертає залишок від ділення 8 % 3 дасть 2. -25.5 % 2.25 дасть 1.5.
<< Зсув вліво Зсуває біти числа вліво на задану к-ть позицій. Будь-яке число в оперативній пам’яті ПК представлено у вигляді бітів — або двійкових чисел, тобто 0 і 1 2 << 2 дасть 8. В двійковому вигляді 2 представляє собою 10. Зсув вліво на 2 біта дає 1000, що в десятковій системі числення означає 8.
>> Зсув вправо Зсуває біти числа вправо на задане число позицій 11 >>1 дасть 5. В двійковій системі числення 11 представляє собою 1011, що будучи зміщеним на 1 біт вправо, дає 101, а це, в свою чергу, не що інше як десяткове 5
& Побітне І Побітна операція І над числами 5 & 3 дає 1
| Побітне АБО Побітна операція АБО над числами 5 | 3 дає 7
^ Побітне ВИКЛЮЧНО АБО Побітна операція ВИКЛЮЧНО АБО над числами 5 ^ 3 дає 6
~ Побітне НЕ Побітне НЕ x це ~(x+1) ~5 дає -6
< Менше ніж Визначає чи вірно те, що x менше за y. Всі операції порівняння повертають True або False. Зауваж на заглавні букви в цих словах 5 < 3 дає False 3 < 5 дає True. Можна складати довільні ланцюжки: 3 < 5 < 7 дає True
> Більше ніж Визначає чи вірно те, що x більше за y 5 > 3 поверне True. Якщо обидва операнди числа, перед порівнянням їх буде приведено до однаковго типу даних. В протилежному випадку завжди повертає False
<= Менше ніж або еквівалентно Визначає чи вірно те, що x менше за y або x 0 еквівалентний y x = 3; y = 6; x <= y поверне True.
>= Більше ніж або еквівалентно Визначає чи вірно те, що x більше за y або екввівалентний y x = 4; y = 3; x >= 3 поверне True.
== Еквівалентно до Визначає чи об’єкти еквівалентні (рівні) між собою x = 2; y = 2; x == y поверне True. x = 'str'; y = 'stR'; x == y поверне False. x = 'str'; y = 'str'; x == y поверне True.
!= Не еквівалентно до Визначає чи об’єкти не еквівалентні між собою x = 2; y = 3; x != y поверне True.
not Логічне НІ Якщо x є True, то поверне False. Якщо x є False, то поверне True x = True; not x поверне False. Операція not інвертує значення.
and Логічне І x and y поверне False якщо x є False, інакше значення False x = False; y = True; x and y поверне False оскільки x є False. У цьому випадку Python не буде перевіряти значення y тому що він знає, що лівий операнд оператора and дорівнює False з чого випливає, що весь вираз дорівнює False незалежно від значення всіх інших величин. Це називається скорочено оцінкою логічних операторів
or Логічне АБО Якщо x є True, то поверне True. Інакше поверне значення y x = True; y = False; x or y дає True. Тут також може бути виконана скорочена оцінка виразів

Скорочення для математичних операторів

Це загальноприйнята практика проводити якісь математичні операції над змінною, а потім привласнювати результати цієї операції тій же самій змінній.

Ти можеш написати як:

a = 2; a = a * 3;

так і:

a = 2; a *= 3

Пріоритети одних операторів над іншими (порядок обчислення)

Допустимо тобі треба обчислити вираз 2 + 3 * 4. Яку операцю виконаєш першою? Додавання чи віднімання? З курсу математики в школі тобі напевно відомо що операція множення має вищий пріоритет, тому виконується першою.

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

Оператор Опис
lambda Лямбда-вираз
or Логічне АБО
and Логічне І
not x Логічне НІ
in, not in Тест на приналежність
is, is not Тест на тотожність
<,<=,>,>=,!=,== Порівняння
| Побітне АБО
^ Побітне ВИКЛЮЧНО АБО
& Побітне і
<<,>> Зміщеня
+,- Додавання і віднімання
*,/,//,% Множення, ділення, цілочислове ділення, залишок від ділення
+x,-x Позитивне, негативне
~x Побітне НІ
** Піднесення до степені
x.attribute Посилання на атрибут
x[index] Звернення за індексом
x[index1:index2] Зріз
f(arguments) Виклик функції
(expressions,…) Зв’язка або кортеж
[expressions,…] Список
{key:datum,…} Словник

Оператори які мають однаковий рівень пріоритету містяться в одному і тому самому рядку таблиці, наприклад оператор + та - мають однаковий пріорітет.

Зміна порядку обчислення

Для того, щоб зробити вирази більш зрозумілішими можна використовувати дужки. Наприклад, 2 + (3 * 4) однозначно легше проаналізувати ніж 2 + 3 * 4. Останній вираз потребує знання того, яку арифметичну дію слід виконувати першою. Як і з багатьма іншими речами дужки повинні використовуватися з розумом, тобто їх не варто ліпити де попало. Вони не мають бути зайвими.

Додатковою перевагою використання дужок є те, що вони допомагають нам змінювати порядок обчислення. Наприклад, якщо ти хочеш щоб операція додавання виконувалася першою, то напишеш так: (2 + 3) * 4.

 

Асоціативність

Оператори зазвичай асоційовані в порядку обчислення зліва направо. Наприклад, 2 + 3 + 4 вираховується як (2 + 3) + 4.

Але деякі оператори, як оператор привласнення, мають порядок зправа наліво. Таким чином a = b = c обробляється як a = (b = c).

 

Вирази

Приклад:

#!/usr/bin/python
# Filename: expression.py
 
length = 5
breadth = 2
 
area = length * breadth
 
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))

Виведе:

$ python expression.py
Area is 10
Perimeter is 14

Як це працює:

Висота (length) і ширина (breadth) прямокутника містяться в змінних з назвами breadth і length. Ми їх використовуємо для того, щоб обчислити площу і периметр прямокутника. Ми зберегли результат виконаня виразу length * breadth у змінній з ім’ям area. І потім вивели на екран вміст цієї змінної користуючись функцією print. В іншому випадку ми зразу ж вивели результат виразу 2 * (length + breadth), передавши даний вираз як параметр функції print.

Також зауваж те як Python гарно і самостійно форматує вивід. При тому що ми не вказали символу пробілу в виводі на екран між 'Area is' та змінною area, Python вставив пробіл в потрібне місце замість нас. І ми отримали "чистий" і гарний вивід. Також текст програми став більш читабельним (оскільки нам не треба турбуватися про відступи в рядках які ми виводили на екран). Це приклад того як Python робить життя програміста простішим.

Підсумок

Ми побачили як використовувати оператори, операнди і вирази які є основними блоками для побудування будь-якої програми.

 

Автор перекладу - Дмитро Юрченко


( 8 Проголосувало )
Коментарі
Добавити новий
Светлана  - ///Есть ли выборка?   |2015-02-17 22:17:11
Подскажите, только начала изучат, в JS можно
делать выборку в выводе(печати) таким
способомn==1 ? “is” : “are”), Т.е. при n==1
напечатает “is”, в другом случае - “are”.

Есть ли что-то подобное в Python-е?

Заранее спасибо.
Адміністратор   |2015-02-23 01:51:07
avatar Так, є аналог. Ось таким чином:

"is" if n==1
else "are"
іавівяпівп  - hui   |2018-03-10 12:56:34

vi dolbaebi
Анонімно   |2019-02-17 17:05:04

Анонімно   |2022-09-24 17:10:52
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Підписка

Хто онлайн?

Немає
На даний момент 38 гостей на сайті

Український рейтинг
TOP.TOPUA.NET