This media is not supported in your browser
    VIEW IN TELEGRAM
  Важно помнить, что методы модуля
itertools в Python возвращают кортежи, которые представляют собой последовательности отдельных элементов. Это может привести к некоторым недочетам, если не учитывать особенности работы с кортежами.При поиске элементов в кортеже происходит проверка каждого элемента поочередно. Python не проверяет наличие целых групп элементов, а ищет именно указанный кортеж как отдельный элемент.
Например, при поиске кортежа
('A', 'B') Python не будет искать группу элементов 'A' и 'B', а будет искать именно этот кортеж как целостный элемент кортежа.В отличие от работы с кортежами, при поиске подстроки в строке Python будет искать конкретную последовательность символов внутри строки. Если вы используете оператор
in, чтобы проверить вхождение последовательности слева от него в строку справа, то будет возвращено значение истины (True), если подстрока присутствует.Эти нюансы важно учитывать, чтобы избежать ошибок при обработке кортежей и строк в Python.
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Уровень: Сложный
Ксения составляет слова из букв К, С, Е, Н, И, Я.
Каждая гласная буква встречается в слове не более двух раз.
Каждая согласная может стоять в слове на первой позиции, либо не встречаться вовсе.
Сколько различных слов длиною более двух символов может составить Ксения?
Особое внимание нужно уделить условию "после".
from itertools import *
cnt = 0
for l in range(3, 7+1):
for s in product('КСЕНИЯ', repeat=l):
word = ''.join(s)
if all(word.count(x) <= 2 for x in 'ЕИЯ'):
sogl = [x for x in word if x in 'КСН']
if (len(sogl) == 1 and word[0] in sogl) or len(sogl) == 0:
cnt += 1
print(cnt)
# Ответ: 1059
from itertools import *Импорт всех функций из модуля itertools.
cnt = 0Инициализируется переменная cnt, которая будет использоваться для подсчета количества слов, удовлетворяющих заданным условиям.
for l in range(3, 7+1):Запускается внешний цикл for по длине слова l от 3 до 7 включительно.
for s in product('КСЕНИЯ', repeat=l):В цикле генерируются все возможные комбинации символов 'КСЕНИЯ' длины l.
word = ''.join(s)Строка word, объединяя символы из текущего набора s.
if all(word.count(x) <= 2 for x in 'ЕИЯ'):Проверяется, что количество вхождений символов 'Е', 'И' и 'Я' в слове word не превышает 2 для каждого из них.
sogl = [x for x in word if x in 'КСН']Формируется список sogl, содержащий только согласные буквы из слова word (символы 'К', 'С', 'Н').
if (len(sogl) == 1 and word[0] in sogl) or len(sogl) == 0:Проверяется условие, что либо в слове есть только одна согласная и это первая буква, либо в слове нет согласных.
cnt += 1Если слово удовлетворяет условиям, счетчик увеличивается.
print(cnt)Выводится количество слов, удовлетворяющих условиям.
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Когда речь идет о сортировке данных в Python, важно понимать разницу между применением функции
sorted(X, reverse=True) и конструкции reversed(sorted(X)). Давайте рассмотрим эти два подхода более подробно.sorted(X, reverse=True):Функция sorted с параметром reverse=True применяет сортировку элементов последовательности в порядке убывания. Это означает, что наименьшие значения будут находиться в конце списка, а наибольшие - в начале.
Пример:
X = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_X = sorted(X, reverse=True)
print(sorted_X)
# Вывод: [9, 6, 5, 5, 4, 3, 2, 1, 1]
reversed(sorted(X)):Использование reversed(sorted(X)) подразумевает сначала сортировку списка, а затем его обращение. Важно помнить, что reversed возвращает итератор, поэтому обычно его результат преобразуется в список или кортеж для удобства.
Пример:
X = [3, -1, 4, -1, 5, -9, 2, -6, 5]
reversed_sorted = list(reversed(sorted(X)))
print(reversed_sorted)
# Вывод: [5, 5, 4, 3, 2, -1, -1, -6, -9]
Для применения устойчивой сортировки, важно разумно выбирать между sorted(X, reverse=True) и reversed(sorted(X)). Понимание принципов устойчивой сортировки поможет вам эффективно работать с вашими структурами данных. Надеюсь, эта информация будет полезной для вас!
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Автор: PRO100ЕГЭ
Уровень: Базовый
Петя составляет слова путём перестановки букв в слове ПРОСТО. Сколько он сможет составить слов, если запрещено ставить рядом две одинаковые буквы?
В данной задаче удобнее всего будет заменить все гласные на одну букву, и также поступить с согласными. Важно производить такие действия как самое крайнее условие, иначе мы рискуем поломать состав нашего слова раньше времени.
Также важно исключить одинаковые слова, появляющиеся из-за повторяющейся буквы "О" в нашем наборе.
from itertools import permutations
k = []
for x in permutations("ПРОСТО"):
word = ''.join(x)
if "ОО" not in word:
k.append(word)
print(len(set(k)))
# Ответ: 240
from itertools import permutationsИмпортируется функция permutations из модуля itertools, которая генерирует все возможные перестановки элементов.
k = []Создается пустой список k, который будет хранить слова, удовлетворяющие условию задачи.
for x in permutations("ПРОСТО"): Запускается цикл for, в котором перебираются все перестановки букв из слова "ПРОСТО".
word = ''.join(x)Формируется слово word, объединяя буквы из текущей перестановки.
if "ОО" not in word:Проверяется условие, что в слове word нет подстроки "ОО".
k.append(word)Если слово удовлетворяет условию, оно добавляется в список k.
print(len(set(k)))Выводится количество уникальных слов из списка k, используя множество для удаления дубликатов.
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  А как бы вы решали эту задачу?
  Anonymous Poll
    70%
    Через функцию permutation
      
    7%
    Используя функцию product
      
    22%
    Прибор через циклы for
      
    0%
    Код с решением оставлю в комментах
      
    This media is not supported in your browser
    VIEW IN TELEGRAM
  Функция
reversed() - это еще один полезный инструмент для работы с последовательностями данных, который позволяет изменить порядок элементов списка на противоположный.Важно отметить, что функция
reversed() отличается от метода .reverse(), который изменяет список на месте, тогда как функция reversed() возвращает итератор, который представляет собой перевернутую версию исходной последовательности данных.Пример использования функции reversed() в Python:
# Создаем список элементов
numbers = [1, 2, 3, 4, 5]
# Используем reversed() для переворота списка
reversed_numbers = reversed(numbers)
# Выводим элементы списка в обратном порядке
print(list(reversed_numbers))
# Результат:
# [5, 4, 3, 2, 1]
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Что покажет этот код? 🤔
  Anonymous Quiz
    45%
    True
      
    18%
    Выдаст ошибку
      
    23%
    False
      
    14%
    <reversed object at 0x10503eb60>
      
    статград 23.04.pdf
    999.2 KB
  Нужно ли разбирать задачи отсюда?
Ставьте
Файлы добавлю в комментариях
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Чудо произошло, теперь тут есть анимированные эмодзи 🍊 🐤 
  Anonymous Poll
    22%
    44%
    24%
    10%
    This media is not supported in your browser
    VIEW IN TELEGRAM
  Автор: Статград
Уровень: Базовый
Все десятибуквенные коды, составленные из букв, входящих в слово
СКАНЕР, расположены в алфавитном порядке и пронумерованы.
Определите количество кодов, для которых одновременно выполнены условия:
1) номер кода в списке делится на 3;
2) первая буква кода – согласная;
3) код содержит ровно одну букву Р.
from itertools import product
num = 0
cnt = 0
for s in product(sorted('СКАНЕР'), repeat=10):
word = ''.join(s)
num += 1
if num % 3 == 0:
if word[0] in 'СКНР':
if word.count('Р') == 1:
cnt += 1
print(cnt)
# Ответ: 4531250
from itertools import productИмпорт функции product из модуля itertools, которая создает все возможные комбинации длиной n из указанных элементов.
num = 0Инициализация переменной num для отслеживания общего количества рассмотренных комбинаций.
cnt = 0Инициализация переменной cnt для подсчета количества комбинаций, удовлетворяющих условиям задачи.
for s in product(sorted('СКАНЕР'), repeat=10):Цикл for, в котором перебираются все возможные комбинации длиной 10 символов из отсортированных букв 'СКАНЕР'.
word = ''.join(s)Объединение символов из текущей комбинации в одно слово для дальнейшей проверки.
num += 1Увеличение счетчика num на 1 для отслеживания количества рассмотренных комбинаций.
if num % 3 == 0:Проверка, что номер рассматриваемой комбинации делится на 3 без остатка.
if word[0] in 'СКНР':Проверка, содержит ли первая буква слова 'С', 'К', 'Н' или 'Р'.
if word.count('Р') == 1:Проверка, что буква 'Р' встречается в слове ровно 1 раз.
cnt += 1Увеличение счетчика cnt на 1, если текущая комбинация удовлетворяет всем условиям.
print(cnt)Вывод количества комбинаций, удовлетворяющих заданным условиям.
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  
  Информатика ЕГЭ | Илья Андрианов | itpy 🧑💻
статград 23.04.pdf
Есть мысль добить несколько постов (на этой неделе) по 8 номерам, опубликовать шпаргалку и уже на следующей неделе накидать разборов (выборочных) Пайтон задач с этого варианта. Мнение? ☹️ 
🥰  - Одобряем однозначно
⭐️  - Одобряем 100%
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Срезы (slices) - это мощный инструмент в Python, позволяющий извлекать подотрезки данных из последовательностей, таких как списки, строки и кортежи.
Синтаксис срезов в Python:
sequence[начало:конец:шаг]
начало - индекс элемента, с которого начинается срез (включительно).конец - индекс элемента, на котором срез заканчивается (не включительно).шаг - опциональный параметр, определяющий, какие элементы будут выбраны (по умолчанию шаг равен 1).Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Очень грустно, когда посты не набирают реакций, это же так просто сделать «тык» 😪 .  Давайте выберем набор(ы) emoji, который(е) вам нрави(я)тся больше всего. Сами наборы продублирую в комментариях 👇 
  Anonymous Poll
    43%
    29%
    29%
    24%
    39%
    24%
    4%
    Свои варианты можно оставить в комментариях 💻 
      
    This media is not supported in your browser
    VIEW IN TELEGRAM
  Люди не обновившие Телеграм такие:   🗿 
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Нашел интересную задачку 5 номера, есть смысл её разбирать или легчайшая? 🤔 
  Anonymous Poll
    61%
    Давайте сделаем ✈️ 
      
    39%
    Уже успел решить сам 👀 
      
    This media is not supported in your browser
    VIEW IN TELEGRAM
  Автор: М. Шагитов
Уровень: Средний
Алгоритм принимает на вход натуральное число N и строит новое число R следующим образом:
1. Создается двоичная запись числа N.
2. Затем запись обрабатывается согласно следующим правилам:
а) Если N делится на 11, то к двоичной записи N справа добавляются все нули этой записи.
б) Если N не делится на 11, то к двоичной записи N слева добавляются все единицы этой записи.
3. Полученная запись представляет собой двоичную запись числа R.
Определите минимальное число N, после обработки которого алгоритмом получается число R, кратное 227.
for n in range(1, 1000):
s = f'{n:b}'
if n % 11 == 0:
s += s.count('0') * '0'
else:
s = s.count('1') * '1' + s
r = int(s, 2)
if r % 227 == 0:
print(n)
break
Ответ: 59
for n in range(1, 1000):Цикл for, в котором переменная n перебирает значения от 1 до 999 для рассмотрения чисел.
s = f'{n:b}'Преобразование числа n в двоичную строку и сохранение ее в переменной s.
if n % 11 == 0:Проверка, делится ли число n на 11 без остатка.
s += s.count('0') * '0'Если число n делится на 11, то в строку s добавляется количество нулей, равное количеству вхождений символа '0' в строку s.
else:В случае, если число n не делится на 11.
s = s.count('1') * '1' + s К строке s добавляется количество единиц, равное количеству вхождений символа '1' в строке s, сдвигая все символы вправо.
r = int(s, 2)Преобразование двоичной строки s в целое число в переменной r.
if r % 227 == 0:Проверка, делится ли число r на 227 без остатка.
print(n)Вывод числа n, которое удовлетворяет условиям задачи.
breakПрерывание цикла после вывода первого числа n, удовлетворяющего условиям, так как используется break.
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Уровень: Базовый
Сколько существует девятеричных пятизначных чисел, содержащих в своей записи ровно одну цифру 5, в которых никакие две одинаковые цифры не стоят рядом?
Для задач с цифрами важно помнить, что никакое число не может начинаться с 0. Поэтому добавляем условие: "if x[0] > 0:"
from itertools import product
cnt = 0
for x in product(range(9), repeat=5):
if x[0] > 0:
if x.count(5) == 1:
if all(x[i] != x[i + 1] for i in range(4)):
cnt += 1
print(cnt)
# Ответ: 13377
from itertools import productИмпортируется функция product из модуля itertools, которая генерирует декартово произведение итерируемых объектов.
cnt = 0Инициализируется переменная cnt, которая будет использоваться для подсчета количества значений, удовлетворяющих заданным условиям.
for x in product(range(9), repeat=5):Запускается цикл for, в котором генерируются все возможные пятерки чисел от 0 до 8.
if x[0] > 0:Проверяется, что первое число в пятерке больше 0.
if x.count(5) == 1:Проверяется, что число 5 встречается в пятерке ровно один раз.
if all(x[i] != x[i + 1] for i in range(4)):Проверяется, что все числа в пятерке попарно не равны друг другу, кроме последнего и предпоследнего чисел.
cnt += 1Если пятерка чисел удовлетворяет всем условиям, увеличивается счетчик cnt на 1.
print(cnt)Выводится результат: количество пятерок чисел, удовлетворяющих заданным условиям.
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Потыкайте этот пример тут:
numbers = [3, 4, 2, 7, 2, 3, 8, 3, 1, 9]
A = [x**2 for x in numbers if x % 2 == 0]
print(A) # [16, 4, 4, 64]
B = [x**2 if x % 2 == 0 else x ** 3 for x in numbers]
print(B) # [27, 16, 4, 343, 4, 27, 64, 27, 1, 729]
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
    VIEW IN TELEGRAM
  