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

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
🔍 Функции all() и any() в Python: просто о полезном #tpy

В задачах ЕГЭ (например, в номере 25) часто нужно проверять условия для всех или хотя бы одного элемента из набора. Python предлагает элегантные решения — встроенные функции all() и any().


🚩 Пример с all() — Проверка простого числа
def is_prime(x):
if x <= 1:
return False
return all(x % i != 0 for i in range(2, x))

print(is_prime(7)) # Вывод: True


📌 Объяснение:

🔣Генераторное выражение (x % i != 0 for i in range(2, x)) создает последовательность логических значений: True, если x не делится на i, и False, если делится.

🔣Функция all() возвращает True, только если все значения в последовательности — истинны.

🔣В результате, is_prime(7) вернет True, так как 7 не делится ни на одно число от 2 до 6 — то есть, это простое число.


🚩 Пример с any() — Поиск хотя бы одного делителя
def has_divisor(x):
return any(x % i == 0 for i in range(2, x))

print(has_divisor(9)) # Вывод: True


📌 Объяснение:

🔣Генератор проверяет, делится ли x хотя бы на одно число в диапазоне.

🔣any() вернет True, если хотя бы одно значение в последовательности — истина.

🔣В примере has_divisor(9) возвращает True, потому что 9 делится на 3.



💡 Кратко:

🔣all() — возвращает True, если все элементы истинны.

🔣any() — возвращает True, если хотя бы один элемент истинен.

🔣Обе функции работают с итерируемыми объектами (списки, генераторы и т. д.) и часто используются в проверках условий.

#⃣ Вся теория для ЕГЭ в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥932
📱 Можно ли использовать else после for или while в Python? #tpy

Ответ: Да, можно! И это — вполне валидная и полезная конструкция.

📌 Как это работает?
В Python блок else после цикла for или while выполняется только в том случае, если цикл завершился нормально, то есть без использования break.


#⃣ Вся теория для ЕГЭ в одном месте

Программирование на Python | itpy 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥10👍4🔥32
🚩 Строковые константы модуля string в Python #tpy

При работе со строками часто возникает задача: определить, к какой категории символов относится тот или иной символ — цифра ли это, буква, знак пунктуации и т.д.

Помимо методов isdigit(), isalpha(), использования Unicode (ord()) и регулярных выражений, Python предлагает более удобный способ — строковые константы встроенного модуля string.


📚 Примеры полезных констант:
import string

print(string.digits)
# Цифры: 0123456789

print(string.ascii_letters)
# Все английские буквы: abc...XYZ

print(string.ascii_lowercase)
# Только строчные: abc...

print(string.ascii_uppercase)
# Только заглавные: ABC...

print(string.punctuation)
# Знаки препинания: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~


📌 Эти готовые строки особенно полезны, когда:
🔣Нужно фильтровать или валидировать ввод
🔣Писать генераторы случайных паролей
🔣Проверять состав строки без использования регулярных выражений



🔎 Пример использования — фильтрация букв:
s = "Hello123!"
letters_only = [ch for ch in s if ch in string.ascii_letters]
print(letters_only) # ['H', 'e', 'l', 'l', 'o']

Кроме вышеупомянутых, модуль string содержит и другие полезные объекты, включая string.whitespace, string.printable и даже шаблонные классы для форматирования.

🔗 Подробнее в официальной документации:
docs.python.org/3/library/string.html

#⃣ Вся теория для ЕГЭ в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥84🔥3
👩‍💻 Несколько способов как найти значение суммы числовых значений цифр в строке #tpy

Это строка, содержащая числовые символы, из которых мы будем находить сумму:
s = '12345'



1⃣ Вариант 1:
summa1 = 0
for x in s:
summa1 += int(x)
print(summa1) # 15

В этом варианте мы используем цикл for, чтобы пройти по каждому символу строки s. Каждый символ преобразуем в число с помощью int(x) и добавляем его к общей сумме summa1.


2⃣ Вариант 2:
summa2 = 0
for i in range(0, 10):
summa2 += s.count(str(i)) * i
print(summa2) # 15

Здесь мы использовали метод count для подсчета количества вхождений каждой цифры от 0 до 9 в строке s. Умножаем количество вхождений на само число и добавляем к summa2.


3⃣ Вариант 3:
summa3 = sum(map(int, s))
print(summa3) # 15

Этот способ применяет функцию map, чтобы преобразовать каждый символ строки s в число. Используя sum, мы находим сумму всех чисел. Это краткий и эффективный способ.


4⃣ Вариант 4:
summa4 = sum([int(x) for x in s])
print(summa4) # 15

Здесь используется генератор списка для создания нового списка, где каждый элемент — это числовое значение символа из s. Затем с помощью sum находим сумму элементов списка.

Альтернативно, в этой версии можно добавить проверку if, чтобы убедиться, что символы являются цифрами:
summa4 = sum([int(x) for x in s if x.isdigit()])

Это делает код более безопасным на случай, если в строке s присутствуют нечисловые символы.


⤵️ Поделитесь этим постом с друзьями, чтобы все узнали о этих простых способах подсчета суммы чисел в строке💪💪

#⃣ Вся теория для ЕГЭ в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥94🤯3
👩‍💻 Повторяем срезы в Python #tpy

Срезы (slices) - это мощный инструмент в Python, позволяющий взять часть списка или строки, указав, что именно тебе нужно.

Общий вид срезов в Python:
A[начало:конец:шаг]


🚩 начало — индекс, С КОТОРОГО начинаем (включается).
🚩 конец — индекс, ДО КОТОРОГО берём (не включается).
🚩 шаг — через сколько берём элементы (по умолчанию 1).

🚩Пример со строкой:
s = "информатика"

print(s[0:5]) # 'инфор' (с 0 по 4 индекс)
print(s[::-1]) # 'акитамрофни' (разворот строки)
print(s[2:7]) # 'форма' (с 2 по 6 индекс)
print(s[:4]) # 'инфо' (с начала до 3 индекса)
print(s[-4:]) # 'тика' (последние 4 буквы)
print(s[::2]) # 'ифрмата' (каждая вторая буква)


🚩Пример со списком:
nums = [4, 8, 15, 16, 23, 42]

print(nums[1:4]) # [8, 15, 16] (с 1 по 3 индекс)
print(nums[-3:]) # [16, 23, 42] (последние 3 элемента)
print(nums[:3]) # [4, 8, 15] (первые 3 элемента)
print(nums[::-1]) # [42, 23, 16, 15, 8, 4] (разворот списка)
print(nums[::2]) # [4, 15, 23] (каждый второй элемент)


🚩Как запомнить?
🟠 ЛЕВАЯ граница включается, ПРАВАЯ не включается.
🟠 Откуда : докуда : шаг.
🟠 шаг = -1 — идёшь в обратную сторону.
🟠Работает с списками, строками, кортежами

📙Где встречаются срезы на ЕГЭ/ОГЭ по информатике:
🚩 Номер 5 — работа с массивами (списки, строки).
🚩 Номер 8 — работа с текстовыми данными.
🚩 Номер 9 — анализ и обработка данных, перебор подстрок.
а также 13, 14, 17 и других номерах

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥5🔥421
🚩 Почему нельзя напрямую сравнивать два float в Python? #tpy

Ответ: Сравнение через == может вернуть False, даже если числа выглядят равными. Вместо этого нужно использовать math.isclose(a, b), которая сравнивает два числа с учётом допустимого отклонения (rel_tol и abs_tol) и гарантирует корректное сравнение.


Почему так происходит:

🔣Двоичное представление.
Число 0.1 в двоичном виде - бесконечная дробь. В памяти оно хранится как ближайшее представимое значение, а не как точная десятичная дробь.


🔣Накопление ошибок.
При выполнении операций (+, -, *, /) эти малые погрешности складываются.


🔣Прямое сравнение.
Оператор == проверяет полное совпадение битов результата, поэтому даже «крошечная» разница даст False.



👩‍💻 Пример кода:
import math

# Два выражения, которые математически равны
a = 0.1 + 0.2
b = 0.3

# Прямое сравнение
print("a =", a) # a = 0.30000000000000004
print("b =", b) # b = 0.3
print("a == b ->", a == b) # False!

# Сравнение с учётом допуска погрешности
# По умолчанию rel_tol=1e-09, abs_tol=0.0
print("math.isclose(a, b) ->", math.isclose(a, b)) # True


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5🔥3😁1
👩‍💻 Использования f-строк в python #tpy

Если раньше для подстановки переменных в строку мы писали:
"Привет, {}!".format(name)

то теперь с f-строками можно проще:
name = "Андрей"
print(f"Привет, {name}!") # Привет, Андрей!



🚩 Почему f-строки удобны:
🕓 Код становится короче.
🕓 Сразу видно, какие переменные подставляются.
🕓 Можно вставлять даже выражения:
a = 5
b = 3
print(f"{a} + {b} = {a + b}") # 5 + 3 = 8


👩‍💻 Пример:
user = "Андрей"
action = "покупка"

log = f"Пользователь {user} зашел на сайт и выполнил действие: {action}"
print(log) # Пользователь Андрей зашел на сайт и выполнил действие: покупка


💡 Запомни:
Чтобы использовать f-строку, ставь f перед кавычками и указывай переменные в {}.

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍159
📱 Конструкция eval() в Python #tpy

📓 Многие сталкиваются с задачами, где нужно вычислить выражение, заданное в виде строки, например: "2+3*4" или " (10 - 3) ** 2".

🚩 В таких случаях помогает функция eval()
Она "преобразует" строку в код и выполняет его, возвращая результат.

Примеры использования:
expression = "2+3*4" 
result = eval(expression)
print(result) # Выведет 14

expression = " (10 - 3) ** 2" 
result = eval(expression)
print(result) # Выведет 49

expression = "( 2+3*4 ) * 3"  
result = eval(expression)
print(result) # Выведет 42


⚠️ Важно помнить: eval() — мощный инструмент, но его использование опасно, если строка содержит неподтвержденный или вредоносный код.

На экзамене обычно не проблема, а в реальной разработке лучше избегать eval() без необходимости.

✔️В контексте ЕГЭ eval() помогает быстро выполнять вычисления из строковых выражений, что удобно при решении задачи под номером 24.



🚀 Примечание: eval() — ваш быстрый помощник, но применять его нужно с осторожностью!


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥16🔥13👍5
📎Объединение итерируемых объектов с помощью itertools.chain #tpy

Когда у тебя есть несколько списков, кортежей или других итерируемых объектов, и нужно пройти по ним, будто это один большой список — itertools.chain делает это просто и эффективно, без создания дополнительных промежуточных структур.

↗️ Почему это круто?
itertools.chain позволяет объединять итерируемые объекты "на лету", экономя память и ускоряя обработку больших наборов данных. Особенно полезно, когда работаешь с объемными файлами или потоками данных.


Пример использования:
import itertools

list1 = [1, 2, 3]
list2 = ('a', 'b', 'c')
list3 = range(10, 13)

# Объединяем без создания новых списков
for item in itertools.chain(list1, list2, list3):
print(item, end=' ')


🪄Вывод:
1 2 3 a b c 10 11 12


Теперь ты можешь обходить все эти коллекции как один поток, не тратя лишнюю память 🚀

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍11❤‍🔥2🔥2
📎Что такое enumerate() в Python и почему это удобно? #tpy

🪄 Функция enumerate() в Python - позволяет одновременно проходить по итерируемому объекту и получать индекс каждого элемента - очень удобно и читаемо.

↗️ Почему это полезно?
- Не нужно самостоятельно создавать счетчик
- Упрощает код при необходимости знать позицию элемента
- Особенно полезна при обработке списков, кортежей, строк и других итерируемых структур

Пример использования:

fruits = ['яблоко', 'банан', 'киви']

for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")


Вывод:
0: яблоко
1: банан
2: киви


Теперь мы можем работать с циклами ещё удобнее! 🚀

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥12🔥32👍1
👩‍💻 Генераторы списков в Python #tpy

Это обычный способ создания списков через цикл for, но более лаконичный и читаемый.

🟣Обычный способ:
res = []
for i in range(10):
if i % 2 == 0:
res.append(i ** 2)
print(res) # [0, 4, 16, 36, 64]


🟣Через генератором списков:
res = [i ** 2 for i in range(10) if i % 2 == 0]
print(res) # [0, 4, 16, 36, 64]



📌 Синтаксис:
[выражение for переменная in последовательность if условие]


💬 Читается как:
«Добавь выражение в список для каждого элемента, если выполняется условие»



🚩 Примеры для ЕГЭ:

🟣Все нечётные числа от 1 до 20:
[x for x in range(1, 21) if x % 2 != 0]


🟣Строки в верхнем регистре:
[s.upper() for s in ['питон', 'егэ', 'код']]


🟣Цифры от 0 до 9, кроме 3 и 7:
[x for x in range(10) if x not in (3, 7)]



💭 Когда использовать?

🕓для компактного создания списков
🕓когда нужна фильтрация (if)
🕓при преобразовании значений

💡 Важно: генераторы не заменяют циклы везде. Но для быстрого и чистого кода они очень полезны.


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥33🔥2
🚀 Почему нельзя использовать is для сравнения строк и чисел в Python? #tpy

💻 is - это оператор идентичности, он проверяет, ссылаются ли переменные на один и тот же объект в памяти. А == - оператор равенства, сравнивает значения.

🔍 Для небольших чисел и коротких строк Python часто использует кэш, поэтому is может иногда возвращать True.
Но для больших чисел или длинных строк это не гарантировано - объекты могут быть разными.


Пример с кодом:
a = 256
b = 256
print(a is b) # True (кэш)

x = "hello"
y = "hello"
print(x is y) # True (кэш)

a = 1000
b = 1000
print(a is b) # False (разные объекты)


⚠️ Используйте == для сравнения значений, is - только чтобы проверить, ссылаются ли переменные на один объект!

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5🔥32
📎 Что такое файл .env, и зачем он нужен? #tpy

Если вы когда-либо работали с проектами на Python, Node.js или других языках, то, скорее всего, сталкивались с файлами .env. Но что они из себя представляют?

Файл .env - это секретный шкафчик для хранения переменных окружения!
В нем хранятся важные настройки: ключи API, пароли, настройки базы данных и другие конфиденциальные данные.


🔒 Почему это удобно?
- Безопасность: секретные данные не хранятся прямо в коде, их легко исключить из системы контроля версий.
- Гибкость: можно легко менять настройки между разными окружениями - тестовым, продакшеном и локальной разработкой.
- Удобство: все важные переменные сосредоточены в одном месте, их легко найти и обновить.


🚀 .env - это безопасный способ хранения конфиденциальной информации, если он используется локально и не попадает в публичные источники.
⚠️ Ведь его публичное размещение - серьёзная уязвимость!


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
24❤‍🔥2🔥2