Введение
В этой лабораторной работе вы получите всестороннее представление о различных операторах в Python — фундаментальной концепции для написания эффективного кода. Мы изучим и попрактикуемся в использовании арифметических, операторов сравнения, присваивания, логических, побитовых (bitwise), операторов членства (membership) и тождественности (identity).
С помощью практических упражнений с использованием интегрированного редактора VS Code и терминала вы научитесь выполнять вычисления, производить сравнения, присваивать значения, комбинировать условия, манипулировать битами, проверять членство и сравнивать идентичность объектов. К концу этой лабораторной работы вы будете свободно использовать эти операторы для создания более сложных и функциональных программ на Python.
Изучение арифметических операторов и операторов сравнения
На этом шаге мы изучим основные арифметические операторы и операторы сравнения в Python. Эти операторы необходимы для выполнения вычислений и принятия решений в ваших программах. В рабочей среде для вас уже создан файл с именем operators.py в директории ~/project.
Сначала найдите файл operators.py в проводнике файлов (file explorer) слева в редакторе VS Code и откройте его. Весь наш код мы будем писать в этом единственном файле.
Начнем с арифметических операторов. Добавьте следующий код на Python в файл operators.py:
## Arithmetic Operators
a = 21
b = 5
print(f'{a} + {b} = {a + b}')
print(f'{a} - {b} = {a - b}')
print(f'{a} * {b} = {a * b}')
print(f'{a} / {b} = {a / b}') ## Standard division
print(f'{a} // {b} = {a // b}') ## Floor division, rounds down to the nearest whole number
print(f'{a} % {b} = {a % b}') ## Modulo, returns the remainder
print(f'{a} ** {b} = {a ** b}') ## Exponentiation, a to the power of b
После добавления кода сохраните файл, нажав Ctrl + S.
Чтобы запустить скрипт, откройте интегрированный терминал (integrated terminal) в VS Code, выбрав Terminal > New Terminal в верхнем меню. Затем выполните следующую команду:
python ~/project/operators.py
В терминале вы должны увидеть следующий вывод:
21 + 5 = 26
21 - 5 = 16
21 * 5 = 105
21 / 5 = 4.2
21 // 5 = 4
21 % 5 = 1
21 ** 5 = 4084101
Далее давайте изучим операторы сравнения. Эти операторы сравнивают два значения и возвращают булево (Boolean) значение: True или False.
Добавьте следующий код в конец вашего файла operators.py:
## Comparison Operators
print("\n--- Comparison Operators ---")
a = 6
b = 5
print(f'{a} == {b} is {a == b}') ## Equal to
print(f'{a} != {b} is {a != b}') ## Not equal to
print(f'{a} > {b} is {a > b}') ## Greater than
print(f'{a} < {b} is {a < b}') ## Less than
print(f'{a} >= {b} is {a >= b}') ## Greater than or equal to
print(f'{a} <= {b} is {a <= b}') ## Less than or equal to
Снова сохраните файл и запустите его из терминала:
python ~/project/operators.py
Теперь вывод будет включать результаты операций сравнения:
21 + 5 = 26
21 - 5 = 16
21 * 5 = 105
21 / 5 = 4.2
21 // 5 = 4
21 % 5 = 1
21 ** 5 = 4084101
--- Comparison Operators ---
6 == 5 is False
6 != 5 is True
6 > 5 is True
6 < 5 is False
6 >= 5 is True
6 <= 5 is False
Теперь вы успешно использовали арифметические операторы и операторы сравнения в скрипте Python.
Практика с операторами присваивания и логическими операторами
На этом шаге мы попрактикуемся в использовании операторов присваивания (assignment operators) и логических операторов (logical operators). Операторы присваивания используются для присвоения или обновления значения переменной, в то время как логические операторы используются для объединения условных выражений.
Продолжайте работать с файлом operators.py в редакторе VS Code.
Сначала добавим примеры операторов присваивания. Они предоставляют сокращенный способ выполнения операции и присвоения результата той же переменной.
Добавьте следующий код в конец вашего файла operators.py:
## Assignment Operators
print("\n--- Assignment Operators ---")
a = 10
b = 3
print(f'Initial a: {a}')
c = a
c += b ## Equivalent to c = c + b
print(f'a += b: {c}')
c = a
c -= b ## Equivalent to c = c - b
print(f'a -= b: {c}')
c = a
c *= b ## Equivalent to c = c * b
print(f'a *= b: {c}')
c = a
c /= b ## Equivalent to c = c / b
print(f'a /= b: {c}')
## Walrus operator (Python 3.8+)
## It assigns a value to a variable as part of a larger expression.
print("\n--- Walrus Operator ---")
text = 'hello python'
if (n := len(text)) > 10:
print(f'The string is long enough ({n} characters)')
Сохраните файл и запустите его из терминала:
python ~/project/operators.py
Вы должны увидеть вывод для операторов присваивания:
... (output from previous step) ...
--- Assignment Operators ---
Initial a: 10
a += b: 13
a -= b: 7
a *= b: 30
a /= b: 3.3333333333333335
--- Walrus Operator ---
The string is long enough (12 characters)
Теперь добавим примеры логических операторов (and, or, not). Эти операторы работают с булевыми значениями, но также могут работать и с другими типами. В Python значения, такие как 0, None и пустые коллекции ('', [], {}), считаются False (ложным). Все остальные значения считаются True (истинным).
Добавьте следующий код в конец вашего файла operators.py:
## Logical Operators
print("\n--- Logical Operators ---")
x = True
y = False
print(f'{x} and {y} is {x and y}')
print(f'{x} or {y} is {x or y}')
print(f'not {x} is {not x}')
## Evaluation with non-boolean values
a = 10 ## True
b = 0 ## False
print(f'{a} and {b} returns {a and b}') ## Returns the first Falsey value or the last Truthy value
print(f'{a} or {b} returns {a or b}') ## Returns the first Truthy value or the last Falsey value
Сохраните файл и запустите его снова:
python ~/project/operators.py
Теперь вывод будет включать результаты логических операций:
... (output from previous examples) ...
--- Logical Operators ---
True and False is False
True or False is True
not True is False
10 and 0 returns 0
10 or 0 returns 10
Теперь вы попрактиковались в использовании операторов присваивания и логических операторов в Python.
Изучение побитовых операторов
На этом шаге мы узнаем о побитовых операторах (bitwise operators). Эти операторы выполняют операции непосредственно над двоичным (base-2) представлением целых чисел. Это полезно для низкоуровневой манипуляции данными.
Продолжайте редактировать файл operators.py.
Сначала посмотрим на двоичное представление нескольких чисел с помощью функции bin(). Префикс 0b указывает на то, что следующие цифры являются двоичными.
Добавьте этот код в конец operators.py:
## Bitwise Operators
print("\n--- Bitwise Operators ---")
a = 5 ## Binary: 0b101
b = 9 ## Binary: 0b1001
print(f'Binary of {a} is {bin(a)}')
print(f'Binary of {b} is {bin(b)}')
## For clarity, let's align them with 4 bits:
## a = 0101
## b = 1001
## Bitwise AND (&): Sets each bit to 1 if both bits are 1.
## 0101 & 1001 = 0001 (Decimal 1)
print(f'{a} & {b} = {a & b}')
## Bitwise OR (|): Sets each bit to 1 if one of the two bits is 1.
## 0101 | 1001 = 1101 (Decimal 13)
print(f'{a} | {b} = {a | b}')
## Bitwise XOR (^): Sets each bit to 1 if only one of the two bits is 1.
## 0101 ^ 1001 = 1100 (Decimal 12)
print(f'{a} ^ {b} = {a ^ b}')
## Bitwise NOT (~): Inverts all the bits.
## ~a is equivalent to -(a+1)
print(f'~{a} = {~a}')
## Left Shift (<<): Shifts bits to the left, filling with zeros.
## Equivalent to multiplying by 2**n.
## 5 << 2 means 0101 becomes 10100 (Decimal 20)
print(f'{a} << 2 = {a << 2}')
## Right Shift (>>): Shifts bits to the right, discarding bits from the right.
## Equivalent to floor division by 2**n.
## 9 >> 2 means 1001 becomes 10 (Decimal 2)
print(f'{b} >> 2 = {b >> 2}')
Сохраните файл и запустите скрипт из терминала:
python ~/project/operators.py
Вы увидите вывод, демонстрирующий каждую побитовую операцию:
... (output from previous steps) ...
--- Bitwise Operators ---
Binary of 5 is 0b101
Binary of 9 is 0b1001
5 & 9 = 1
5 | 9 = 13
5 ^ 9 = 12
~5 = -6
5 << 2 = 20
9 >> 2 = 2
Теперь вы узнали, как использовать побитовые операторы для манипулирования целыми числами на уровне битов.
Использование операторов принадлежности и тождественности
На этом заключительном шаге мы рассмотрим операторы принадлежности (in, not in) и операторы тождественности (identity operators) (is, is not). Операторы принадлежности проверяют, присутствует ли значение в последовательности (sequence), в то время как операторы тождественности проверяют, ссылаются ли две переменные на один и тот же объект в памяти.
Продолжайте работать с файлом operators.py.
Сначала добавим примеры операторов принадлежности. Они обычно используются с такими последовательностями, как списки (lists), кортежи (tuples) и строки (strings).
Добавьте следующий код в конец вашего файла operators.py:
## Membership Operators
print("\n--- Membership Operators ---")
my_list = [1, 3, 5, 7]
print(f'3 in {my_list} is {3 in my_list}')
print(f'4 not in {my_list} is {4 not in my_list}')
greeting = "hello world"
print(f'"world" in "{greeting}" is {"world" in greeting}')
Сохраните файл и запустите его:
python ~/project/operators.py
Вывод для операторов принадлежности будет следующим:
... (output from previous steps) ...
--- Membership Operators ---
3 in [1, 3, 5, 7] is True
4 not in [1, 3, 5, 7] is True
"world" in "hello world" is True
Теперь давайте изучим операторы тождественности. Важно понимать разницу между is (тождественность) и == (равенство). == проверяет, одинаковы ли значения двух объектов, в то время как is проверяет, являются ли они одним и тем же объектом (то есть, имеют ли они один и тот же адрес в памяти).
Добавьте следующий код в ваш файл operators.py:
## Identity Operators
print("\n--- Identity Operators ---")
## For small integers, Python often reuses the same object.
x = 256
y = 256
print(f'x is y (for 256): {x is y}') ## This is often True
## For larger integers, Python may create separate objects.
a = 257
b = 257
print(f'a is b (for 257): {a is b}') ## This is often False
## For mutable objects like lists, they are different objects even if their content is the same.
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(f'list1 == list2: {list1 == list2}') ## Checks for equal content (True)
print(f'list1 is list2: {list1 is list2}') ## Checks for same object (False)
print(f'list1 is not list2: {list1 is not list2}') ## Checks for different objects (True)
Сохраните файл и запустите его в последний раз:
python ~/project/operators.py
Вывод демонстрирует разницу между равенством и тождественностью:
... (output from previous examples) ...
--- Identity Operators ---
x is y (for 256): True
a is b (for 257): True
list1 == list2: True
list1 is list2: False
list1 is not list2: True
Вы успешно использовали операторы принадлежности и тождественности, завершив изучение основных типов операторов Python.
Резюме
В этой лабораторной работе вы получили практический опыт работы с различными типами операторов в Python. Вы начали с изучения основных арифметических операторов и операторов сравнения для выполнения вычислений и оценки условий. Затем вы попрактиковались в использовании операторов присваивания для эффективного обновления переменных и логических операторов для комбинирования условной логики.
Кроме того, вы углубились в побитовые операторы для понимания низкоуровневой манипуляции данными и завершили работу операторами принадлежности (membership) и тождественности (identity) для проверки наличия элементов и тождественности объектов. Написав и выполнив код для каждого типа оператора в редакторе VS Code, вы заложили прочную основу для использования этих важнейших инструментов в вашем будущем программировании на Python.



