Название операции | Операция в формуле | Операция в Python с числовыми переменными | Операция в Python со множествами |
инверсия, отрицание | ¬ | not() | not() |
импликация, следование | → | <= | |
конъюнкция, поразрядная конъюнкция | /\ & | & | intersection() |
дизъюнкция, поразрядная дизъюнкция | \/ + | | | union() |
тождество | ≡ | == | == |
Порядок выполнения логических операций:
- () действия в скобках
- not отрицание (НЕ)
- and логическое умножение (И)
- or логическое сложение (ИЛИ) и операция "исключающее ИЛИ"
- <= импликация (следование)
- == эквивалентность
Порядок выполнения операций в Python:
- Возведение в степень (**).
- Унарный минус (-). Используется для получения, например, противоположного числа.
- Умножение, деление (* / % //).
- Сложение и вычитание (+ -).
- Оператор вхождения/принадлежности (in)
- Операции сравнения (<= < > >=)
- Операции равенства (== !=)
- Операции присваивания (=)
- Логические операции (not or and)
ITERTOOLS комбинаторика на Python решаем 8-е задание без труда
alphabet = "ТИМАШЕВСК" words = [''.join(iword) for iword in itertools.product(alphabet, repeat=6)] # 6-ти-буквенные слова в списке из любого набора букв
ЕГЭ по информатике. Функция product модуля itertools в задании 8
Тест функций product() и permutations():
from itertools import * word = 'СПОРТЛОТО' i = 0 for w in permutations(word): print(''.join(w)) i += 1 if i > 2: break i = 0 for w in product(word, repeat=4): print(''.join(w)) i += 1 if i > 10: break
Счёт в 7-ой системе счисления через product():
from itertools import * w = 3 for px in product('0123456', repeat=w): print(int(''.join(px)))
Счёт в любой (цифровой) системе счисления через product() ('обёрнуто' в функцию):
def anySS_count_print(ss, w): sdigits = ''.join([str(x) for x in range(ss)]) for px in product(sdigits, repeat=w): r = str(int(''.join(px))) print(r) anySS_count_print(7, 3)
Использование lru_cache() из functools при решении 16-ых задач с рекурсией (со вложенностью вызовов более 1000):
from functools import * @lru_cache(None) def f(n): if n == 0: return 0 elif 1 <= n < 3: return 1 elif n >= 3: return f(n - 1) + f(n - 2) print(f(47))
Увеличение глубины рекурсии с помощью setrecursionlimit() из библиотеки sys при решении 16-ых задач (со вложенностью вызовов более 1000):
import sys, math print(sys.getrecursionlimit()) # Узнать глубину рекурсии sys.setrecursionlimit(2345) # Установить глубину рекурсии with sys.recursionlimit(1500): print(math.fib(1000, 0))
Перевод числа в любую систему счисления в пределах 10:
def toSS(n, ss): res = '' while n > 0: d = str(n % ss) res = d + res n //= ss return res n7 = 234532 s7 = toSS(n7, 7) print(n7, s7) print(int(s7, 7))
Библиотека re (функция re.fullmatch()) для решения заданий с масками/шаблонами. Подробное описание в статье: Регулярные выражения в Python (regex find match groups replace string)
Задача 22 - очерёдность процессов:
def f(i): if a[i][1] == 0: return a[i][0] else: return a[i][0] + max(f(j) for j in a[i][1:]) a = {} for line in open('22-59.csv'): x = list(map(int, line.split(';'))) a[x[0]] = x[1:] # x[0] - 1-ый столбец - номер процесса, x[1:] - следующие столбцы - номера процессов от которых зависит процесс в 1-ом столбце print(max(f(i) for i in a.keys()))