# 2. Operators¶

## 2.1. General operators¶

Tab. 2.3. Universal operators
Operand Example Description
x < y x < 18 value of x is less than y
x <= y x <= 18 value of x is less or equal y
x > y x > 18 value of x is greater than y
x >= y x >= 18 value of x is greater or equal than y
x == y x == 18 value of x is equal to y
x != y x != 18 value of x is not equal to y
x += y x = 1; x += 3; x == 4 add y to x and assign new value to x
x in y x in [1, 2, 3] x contains y
x not in y x not in [1, 2, 3] x not contains y
x is y x is None x is the same object as y
x is not y x is not None x is not the same object as y

## 2.2. Numerical types operators¶

Tab. 2.4. Numerical types operators
Operand Description
-x x negacja
+x x bez zmiany
x + y suma x i y
x - y różnica x i y
x * y iloczyn x i y
x / y iloraz x i y
x ** y x do potęgi y
x // y ilość całych z dzielenia x przez y
x % y reszta z dzielenia x przez y
divmod(x, y) para (ile_calych, reszta) (x // y, x % y)
abs(x) wartość bezwzględna x
int(x) x przekonwertowane do int
float(x) x przekonwertowane do float
round(x, y) x zaokrąglenie liczby z precyzją y
complex(re, im) liczba zespolona: re - część rzeczywista, im - część urojona

## 2.3. Bitwise operators¶

• | - OR
• & - AND
• ~ - NOT
• ^ - XOR
• << - Shift left
• >> - Shift right
0 ^ 0  # 0
1 ^ 1  # 0
1 ^ 0  # 1
0 ^ 1  # 1
8 ^ 5  # 13

1000  # 8 (binary)
0101  # 3 (binary)
----  # APPLY XOR ('vertically')
1101  # result = 13 (dec)


## 2.4. Operator precedence¶

Tab. 2.5. Operator precedence
Operator Description
lambda Lambda expression
if, elif, else Conditional expression
and Boolean AND
or Boolean OR
not x Boolean NOT

in, not in, is, is not,

<, <=, >, >=, !=, ==

Comparisons, including membership tests and identity tests
| Bitwise OR
^ Bitwise XOR
& Bitwise AND
<<, >> Shifts
** Exponentiation
*, @, /, //, % Multiplication, matrix multiplication, division, floor division, remainder
+, - Addition and subtraction
+x, -x, ~x Positive, negative, bitwise NOT
await Await expression

x[index], x[index:index],

x(arguments...), x.attribute

Subscription, slicing, call, attribute reference

(expressions...), [expressions...],

{key: value...}, {expressions...}

Binding or tuple display, list display, dictionary display, set display

## 2.5. Assignments¶

### 2.5.1. Even and odd numbers¶

1. Wczytaj od użytkownika ciąg znaków dowolnej długości
2. Użytkownik poda wyłącznie ciągi znaków parsujące się do int lub float bez błędów
3. Sprawdź czy jest to liczba parzysta, czy nieparzysta
About: The whys and wherefores: Filename: operators_even_odd.py Lines of code to write: 5 lines Estimated time of completion: 5 min wczytywanie ciągu znaków od użytkownika weryfikacja ciągu wprowadzonego od użytkownika konwersja typów i rzutowanie wykorzystanie operatorów matematycznych Zero jest parzyste: https://en.wikipedia.org/wiki/Parity_of_zero Liczba parzysta, to taka, która po podzieleniu przez dwa nie ma reszty Zwróć uwagę, że operator % działa modulo tylko na int oraz na float. Przy str ma zupełnie inne znaczenie.

### 2.5.2. Integers and floats¶

1. Wczytaj liczbę od użytkownika (poda tylko int albo float)
2. Wyświetl informację czy jest to liczba całkowita, czy niecałkowita.
About: The whys and wherefores: Filename: operators_integers.py Lines of code to write: 7 lines Estimated time of completion: 10 min wczytywanie ciągu znaków od użytkownika weryfikacja ciągu wprowadzonego od użytkownika konwersja typów i rzutowanie Liczba całkowita to taka, której część dziesiętna nie występuje lub jest równa zero. Możesz to sprawdzić dzieląc liczbę z resztą przez 1 i sprawdzając resztę z dzielenia. Zwróć uywagę, że input() zawsze zwraca str wiec trzeba rzutowac na int, ale wtedy tracimy informację czy wczesniej mielismy float