| Название операции | Операция в формуле | Операция в 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()))
