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:
  • Filename: operators_even_odd.py
  • Lines of code to write: 5 lines
  • Estimated time of completion: 5 min
The whys and wherefores:
 
  • wczytywanie ciągu znaków od użytkownika
  • weryfikacja ciągu wprowadzonego od użytkownika
  • konwersja typów i rzutowanie
  • wykorzystanie operatorów matematycznych
Hints:
  • 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:
  • Filename: operators_integers.py
  • Lines of code to write: 7 lines
  • Estimated time of completion: 10 min
The whys and wherefores:
 
  • wczytywanie ciągu znaków od użytkownika
  • weryfikacja ciągu wprowadzonego od użytkownika
  • konwersja typów i rzutowanie
Hints:
  • 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