Информатика | Илья Андрианов | itpy 🧑‍💻
1.05K subscribers
263 photos
20 videos
19 files
629 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
Информатика | Илья Андрианов | itpy 🧑‍💻 pinned «Пачки задач по номерам ЕГЭ Информатика #1. https://clck.ru/ebsmq #2. https://clck.ru/ebsnV #3. https://clck.ru/ebsnt #4. https://clck.ru/ebsoN #5. https://clck.ru/ebsp8 #6. https://clck.ru/ebspK #7. https://clck.ru/ebspX #8. https://clck.ru/ebsq2 #9. htt…»
Для всех ребят которые поступают в вузы, для тех кто просто хочет развиваться в IT - очень рекомендую пройти бесплатный курс профориентации от Яндекс Практикума: https://practicum.yandex.ru/career-advisor/

Вы познакомитесь с самыми актуальными IT профессиями и сможете определиться с выбором средств разработки (которые можно использовать и для сдачи ЕГЭ)
Channel name was changed to «itpy | ИнформатикаЕГЭ»
8️⃣Номер #8
код задания: 3701

Условие:
Все 6-буквенные слова, составленные из букв Б, К, Ф, записаны в алфавитном порядке и пронумерованы.
Вот начало списка:
1. ББББББ
2. БББББК
3. БББББФ
4. ББББКБ
……

☝️Найти:
Запишите слово, которое стоит на 342-м месте от начала списка.

Примечание:
Задание однозначно решается простым строковым перебором, потратьте немного времени и сравните свое решение с моим, а в дальнейших постах мы полноценно разобремся как решать такие задачи.

Ответ:
ККБКФФ

↘️Программа:
s = "БКФ"
M = []
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
for f in s:
temp = a + b + c + d + e + f
M.append(temp)

print(M[342-1])


Комментарии:
1. Обратите внимание на условие с алфавитным порядком - наша строка s удовлетворяет этому условию. А так же крайняя буква слов в начальном списке - формирует алфавитный порядок (алфавит наизусть знать не надо😅).

2. Так как условие требует 6-буквенные слова, то «фориков» для перебора будет тоже шесть. Каждая переменная из форика (a,b,c,d,e,f,g) соответствует порядку буквы в получаемом слове.

3. В пустой список M=[] мы добавляем новополученные слова и по списку организуем поиск.

4. Так как список начинает свой отсчет от 0, а в примере с 1, то мы отнимаем «минус 1» от индекса нашего списка
при поиске нужного слова.
2️⃣ Разбор номера #2
код примера: 10403

📎 Условие:
Логическая функция F задаётся выражением:

(¬x y) (y z).

На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F истинна.

Определите какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z.

# ? ? ? F
# 0 1 0 1
# 0 1 1 1
# 1 1 1 1

Найти:
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы.

📚 Теория:
Читать подробнее..

Как формулу математической логики перенести на язык Python:
# ¬z - (not(z)) отрицание
# ∧ - and конъюнкция
# ∨ - or дизъюнкция
# → - <= импликация
# ≡ - == тождество

Приоритет операций:
отрицание > конъюнкция > дизъюнкция > импликация

Полезные формулы Алгебры высказываний:
1. A → B ≡ ¬A B
2. A
B ≡ B A
3. ¬(A
B) ≡ ¬A ¬B
Где A и B любые сколь угодно сложные формулы.

Таким образом пременив эти преобразования к изначальной формуле, мы можем получить более простое выражение, которое в свою очередь будет удобно поместить в программу!
Информатика | Илья Андрианов | itpy 🧑‍💻
2️⃣ Разбор номера #2 код примера: 10403 📎 Условие: Логическая функция F задаётся выражением: (¬x ∧ y) ∨ (y ∧ z). На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F истинна. Определите какому…
✏️ Решение:
print("x y z F")
for x in range(2):
for y in range(2):
for z in range(2):
F = ( ((not(x)) and y) or (y and z) )
if F == True:
print(x, y, z, F)


Вывод программы:
# x y z F
# 0 1 0 1
# 0 1 1 1
# 1 1 1 1

Теперь это вывод нужно на бумажке сопоставить с таблицой из условия.

💬 Комментарии:
1. Количество строчек решения прямо пропорционально количеству переменных в нашем выражении. Разберемся на примере: в нашей функции три переменные x,y,z и каждая из них может принимать два значения 0 (False) или 1 (True). Таким образом количество строк равно 2**3 = 8
Если бы переменных было четыре x,y,z,w, то количество равнялось бы 2**4 = 16 и тд

2. Строчка print("x y z F") не сильно нужна, она присутствует для удобства

3. Функция range(2) будет перебирать лишь два значения: 0 и 1, что соответствует False и True

4. В переменную F = ( ((not(x)) and y) or (y and z) ) мы записываем функцию полностью (используя подсказку из Теории) и обязательно помещаем ее в общие скобки.
Таким образом мы можем получить значение этой функции при перебираемых значениях переменных x,y,z.
Кстати, если функция сложная, то первоначально можно попробовать упростить ее используя преобразования 1-3. из Теории.

5. if F == True:
print(x, y, z, F)

Если значение функции является истинным (True == 1), то такой набор переменных x,y,z соответствует условию из нашей таблицы.
#tpy Типы данных в Python:
Читать подробнее..

📌 Вступление:
Типы данных позволяют хранить в переменной разные данные, под каждый тип выделается свое кол-во памяти. Так как Python является языком с динамической типизацией, то определение подходящего типа данных к переменной происходит автоматически в момент присвоения ей значения.
Нам крайне важно различать действия над разными типами и разницу между ними.

📚 Теория:
A = 4 # int - integer
Целочисленный тип данных (хранит целые числа)

B = 4.0 # float
Вещественные числа или числа с плавающей точкой (дроби)

C = ‘4’ # str - string
Строчный тип данных, хранит в себе сиволы, слова, знаки… Цифры в том числе могут являться символами!
(Строкой называют все символы в кавычках;
Пробелы, знаки препинания и тд 👉 тоже символы строки)

D1 = True # bool - boolean
D2 = False
Булевый тип данных или математическая логика. Переменные принимают только два значения: Истина (True) или Ложь (False)


✏️ На практике:
pritn(A * 3) # 12

pritn(B * 3) # 12.0
Так как B является переменной типа float, то и результат действия тоже float

pritn(
C * 3) # 444
Строка C продублировалась 3 раза

pritn(A == 5) # False
print(A != 5) # True
Если выражение в скобках истинно, то выведется значение True, а иначе будет False
2️⃣Номер #2
код задания: 35891

📎 Условие:
Логическая функция F задаётся выражением:

(y → z) ∧ ¬((y ∨ w) → (z ∧ x)).

На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки.

Определите какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z, w.

# ? ? ? ? F
# 1 1 * 1 1
# * 1 1 * 1
# 1 1 * * 1

Найти:
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы.

❗️ Примечание:
Внимательно изучите всю теорию представленную в «Разбор номера #2», используйте ХЕШТЕГ для навигации и поиска нужного разбора.
🎉 Ответ:
zwxy

↘️ Программа:
print("x y z w F")
for x in range(2):
for y in range(2):
for z in range(2):
for w in range(2):
F = ( (y <= z) and (not((y or w) <= (z and x))) )
if F == True:
print(x, y, z, w, F)


Вывод программы:
# x y z w F
# 0 0 0 1 True
# 0 0 1 1 True
# 0 1 1 0 True
# 0 1 1 1 True
# 1 0 0 1 True



💬 Комментарии:
1. Обратите внимание, что всю логическую функцию я поместил в общие скобки ( ), это необходимо для корректного чтения логической функции.

2. Переменную F можно было вообще не создавать, но я сделал это для понятного и красивого вывода.

3. Обратите внимание, что логическая операция инверсии (отрицание) записывается как (not())
- это не прихоть, она самая приоритетная, а потому требует отдельныйх скобок ❗️

4. Ну и конечно же не пугайтесь пяти строк вывода, это нормально для четырех переменных x,y,z,w. Так как 2**4 = 16 строк и обработать пять из них не беда 😅
#useful
Для всех, кто овладел базовыми знаниями Python (под базовыми знаниями я подразумеваю достаточный уровень знания теории для успешной сдачи экзамена ЕГЭ по Информатике), я хочу порекомендовать веб платформу CheckIO 💡

По фатку это интерактивный курс с элементами геймификации, доступный к прохождению для двух языков: Python и JavaScript.
Вы выполняете задания, продвигаетесь по дереву прогрессии и параллельно соревнуетесь с тысячами других игроков, но рейтинг строится не по количеству общих очков, а по качеству и скорости выполнения той или иной программы/задачи.

Уровень программирования конечно же выше, чем на базовых бесплатных онлайн курсах Python, но и результат от таких тренировок куда превликательнее 👌
#tpy Арифметические действия:
Читать подробнее..

📌 Вступление:
Арифметические действия это основа, так как любые математические вычисления требуют знаний правильного синтаксиса языка.
В Python арифметические действия очень просто интегрированы, ими удобно пользоваться. Но конечно же есть свои нюансы.
Разберем по пунктам каждое действие ☝️

📚 Теория:
Сложение, умножение и отрицание самые беспроблемные действия, они не имеют подводных камней и с ними приятно работать.

В то время как операция деления разбивается аж на 3 разных команды:
A / B - вещественное деление (деление с дробями)
A // B - целочисленное деление (возвращает только целую часть без округления)
A % B - деление с остатком (возвращает остаток от деления, причем от дробной формы)

Так же полезным действием является возведение в степень, что позволяет избежать использования математической библиотеки import math:
print(A ** B) - возвели A в степень B
print(A ** (1/2)) - пример взятия квадратного корня (свойства степеней)

✏️ На практике:
A = 7
B = 2


1. Сложение
print(A +
B) # 9

2. Вычитание
print(A - B) # 5

3. Умножение
print(A * B) # 14

4. Деление вещественное
print(A / B) # 3.5

5. Деление целочисленное
print(A // B) # 3

6. Деление с остатком
print(A % B) # 1

7. Возведение в степень
print(A ** B) # 49
print(2 ** 4) # 16


8. Взятие корня от переменной
print(16 ** (1 / 2)) # 4.0
print(27 ** (1 / 3)) # 3.0
#useful
Крайне интересное и поучительное видео!
Парень имитирует действия, которые соответствуют манифесту по изучению программирования.

👉 Берите задачку, для этого подойдет любой ресурс - даже книги или как пример codewars.com. И просто пробуйте решать, а со всеми ошибками вам помогут разобраться поисковые запросы Google.

Для того, чтобы довести задачу до правильного решения, мы напрягаем нейронные связи и развиваем мышечную память.
И в скором времени вы начнете использовать полученные знания на автомате.
Возможно даже овладеете слепой печатью 😉
#useful
Хороший пример, чтобы овладеть форматированием строк.
С помощью метода .format() мы можем оформлять консольный вывод наших программ и повышать читабельность кода.

Код можно получить по ссылке: github link
В Python довольно большое кол-во типов данных, но я предпочитаю называть типами данных, только то, что относится непосредственно к переменным. Остальное правильнее называть типами коллекций.

Хочется обратить внимание, что результат действий – тоже обладает своим типом, Python определяет его автоматически исходя от получаемых значений.

Для ЕГЭ нам с лихвой хватит только коллекции list – список, но для тех кто захочет разобраться, оставлю полезные ссылки на подробные статьи по остальным участникам:

tuple - кортеж

set - множество

dict - словарь

Код можно получить по ссылке: github link
👍21
💡Очень интересная задача для тех, кому любопытно, как работает чат бот, отвечающий на ключевые слова. Есть множество способов и я покажу один из самых доступных 🙌🏻

Задача – получить из текста список слов в удобной форме для дальнейшей обработки

1️⃣ В строках (в отличие от списков) нельзя изменять элементы по индексу, поэтому разобьем нашу строку на список ArrayText

2️⃣ Сравнив элементы списка с запрещенными элементами, заменим их на пробелы

3️⃣ Использовав метод .join() , соберем элементы ArrayText в одну строку NewText

4️⃣ Через метод .split() разобьем строку поэлементно в новый список RES

Отлично, теперь по этим данным бот может искать ключевые слова из запроса!

ℹ️Код можно получить по ссылке: github
👍3
ℹ️ Дополнительная информация к посту выше

⚡️Теперь вместо .format(), можно использовать %
Но с небольшими условиями– для каждого типа данных переменных используется свой модуль🔻
◾️ %d– для значений int
◾️ %s– для значений str
◾️ %f– для значений float

⚡️ Чтобы скачать пример, воспользуйся ссылкой на github
1️⃣4️⃣ Разбор номера #14
код примера: 29662

Системы счисления и задачи, которые могут попасться на экзамене, идеально решаются через строки и списки, потому что они крайне похожи!

Отличия списка от строк заключается в возможности изменения элемента строки путем вызова ее через индекс, например M[i] = 5.

В тоже время провернуть такой трюк со строкой (а также с кортежем tuple) мы не сможем, на скрипт s[i] = ‘5’ программа выведет ошибку:
TypeError: 'str' object does not support item assignment

📎 Ссылка на код github #useful