else после for или while в Python? #useful Блок else выполняется только если цикл завершился без использования break.
🔹 Почему это удобно?:
Например, при поиске элемента в списке:
- Если элемент найден — срабатывает break, и блок else пропускается.
- Если элемент не найден — цикл завершится нормально, и else выполнится, позволяя обработать ситуацию.
# Поиск элемента в списке
numbers = [1, 3, 5, 7, 9]
target = 4
for num in numbers:
if num == target:
print("Элемент найден:", target)
break
else:
print("Элемент не найден:", target)
- Если target есть в списке, мы его найдём и выйдем из цикла через break.
- Если target отсутствует, цикл завершится нормально, и сработает блок else, сообщая, что элемент не найден.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1❤1🔥1
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
Теперь ты можешь обходить все эти коллекции как один поток, не тратя лишнюю память
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2🔥1
enumerate() в Python и почему это удобно? #tpyenumerate() в Python - позволяет одновременно проходить по итерируемому объекту и получать индекс каждого элемента - очень удобно и читаемо.- Не нужно самостоятельно создавать счетчик
- Упрощает код при необходимости знать позицию элемента
- Особенно полезна при обработке списков, кортежей, строк и других итерируемых структур
fruits = ['яблоко', 'банан', 'киви']
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
0: яблоко
1: банан
2: киви
Теперь мы можем работать с циклами ещё удобнее!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🔥1
def create_counter():
count = 0 # Внутреннее состояние
def counter():
nonlocal count
count += 1
print("Текущий счет:", count)
return counter
my_counter = create_counter()
my_counter() # Текущий счет: 1
my_counter() # Текущий счет: 2
Каждый вызов my_counter() увеличивает внутренний счетчик, который "запомнен" внутри функции. Это и есть замыкание!
- Хранить состояние между вызовами
- Создавать "приватные" переменные
- Сделать код более модульным и безопасным
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Это обычный способ создания списков через цикл
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 условие]
«Добавь выражение в список для каждого элемента, если выполняется условие»
[x for x in range(1, 21) if x % 2 != 0]
[s.upper() for s in ['питон', 'егэ', 'код']]
[x for x in range(10) if x not in (3, 7)]
💭 Когда использовать?
💡 Важно: генераторы не заменяют циклы везде. Но для быстрого и чистого кода они очень полезны.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
is для сравнения строк и чисел в Python? #tpy🔍 Для небольших чисел и коротких строк 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 - только чтобы проверить, ссылаются ли переменные на один объект!Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🫡1
.env, и зачем он нужен? #tpyЕсли вы когда-либо работали с проектами на
Python, Node.js или других языках, то, скорее всего, сталкивались с файлами .env. Но что они из себя представляют?В нем хранятся важные настройки: ключи API, пароли, настройки базы данных и другие конфиденциальные данные.
🔒 Почему это удобно?
- Безопасность: секретные данные не хранятся прямо в коде, их легко исключить из системы контроля версий.
- Гибкость: можно легко менять настройки между разными окружениями - тестовым, продакшеном и локальной разработкой.
- Удобство: все важные переменные сосредоточены в одном месте, их легко найти и обновить.
.env - это безопасный способ хранения конфиденциальной информации, если он используется локально и не попадает в публичные источники.⚠️ Ведь его публичное размещение - серьёзная уязвимость!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1🔥1
Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:
for M in open('9.txt'):
M = [int(i) for i in M.split()]
print(M)M = [int(i) for i in open('17.txt')]
print(M)s = open('24.txt').readline()Считываем только первую строку файла.
ans = []
for M in open('26.txt'):
M = [int(i) for i in M.split()]
ans.append(M)
Сохраняем каждую строку как список чисел, а потом собираем всё в общий список.
f = open('27.А.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🫡2
📎 list - это изменяемый упорядоченный список. Можно добавлять, удалять, менять элементы. Например:
fruits = ['яблоко', 'банан', 'апельсин']📎 📎 tuple - неизменяемая последовательность. Отлично подходит, когда нужно зафиксировать набор данных:
coordinates = (10, 20)📎 📎 set - множество уникальных элементов. Быстро искать, удалять дубликаты:
unique_numbers = {1, 2, 3}📎 📎 dict - словарь, отображение ключей на значения. Очень удобно для хранения пар "ключ-значение":
person = {'имя': 'Анна', 'возраст': 25}📎 ❄️ frozenset - неизменяемое множество, его нельзя менять после создания. Используется там, где нужен "жёсткий" набор данных. frozenset([1, 2, 3, 4])➡️ frozenset({1, 2, 3, 4})🔼 🔽 deque - двусторонняя очередь из модуля collections. Быстро добавлять и удалять элементы с обоих концов:
from collections import deque⚙️ d = deque() - инициализировать элементами из любого итерируемого объекта (список, кортеж и т. д.).
Технологии телеграмма не стоят на месте, поэтому обращаю ваше внимание, что мы часто используем инструмент "цитата". Кликайте на цитату выше, чтобы открыть текст для чтения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤🔥1
Это обычный способ создания списков через цикл
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 условие]
«Добавь выражение в список для каждого элемента, если выполняется условие»
[x for x in range(1, 21) if x % 2 != 0]
[s.upper() for s in ['питон', 'егэ', 'код']]
[x for x in range(10) if x not in (3, 7)]
💭 Когда использовать?
💡 Важно: генераторы не заменяют циклы везде. Но для быстрого и чистого кода они очень полезны.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6🔥3👍1
Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:
for M in open('test.txt'):
M = [int(i) for i in M.split()]
print(M)M = [int(i) for i in open('test.txt')]
print(M)s = open('test.txt').readline()ans = []
for M in open('test.txt'):
M = [int(i) for i in M.split()]
ans.append(M)
f = open('test.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥2
Если раньше для подстановки переменных в строку мы писали:
"Привет, {}!".format(name)то теперь с f-строками можно проще:
name = "Андрей"
print(f"Привет, {name}!") # Привет, Андрей!
a = 5
b = 3
print(f"{a} + {b} = {a + b}") # 5 + 3 = 8
user = "Андрей"
action = "покупка"
log = f"Пользователь {user} зашел на сайт и выполнил действие: {action}"
print(log) # Пользователь Андрей зашел на сайт и выполнил действие: покупка
Чтобы использовать
f-строку, ставь f перед кавычками и указывай переменные в {}.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2❤🔥1🥰1
Python! #tpy1️⃣ upper() - переводит строку в верхний регистр.
"hello".upper() → "HELLO"2️⃣ lower() - переводит строку в нижний регистр.
"HELLO".lower() → "hello"3️⃣ capitalize() - делает первую букву заглавной.
"hello".capitalize() → "Hello"4️⃣ title() - каждое слово с заглавной буквы.
"hello world".title() → "Hello World"5️⃣ strip() - удаляет пробелы с обоих концов.
"hello".strip() → "hello"6️⃣ lstrip() / rstrip() - удаляет пробелы слева/справа.7️⃣ replace(old, new) - заменяет подстроку.
"abc".replace("a", "x") → "xbc"8️⃣ split(sep) - разбивает строку по разделителю.
"a,b,c".split(",") → ["a", "b", "c"]0⃣ join(list) - собирает строку из списка.
",".join(["a", "b", "c"]) → "a,b,c"🔟 startswith(str) / endswith(str) - проверяет начало/конец строки.
"hello".startswith("he") → True1️⃣ 1️⃣ find(sub) - ищет подстроку и возвращает индекс.
"hello".find("ll") → 21️⃣ 2️⃣ count(sub) - считает количество вхождений.
"hello".count("l") → 21️⃣ 3️⃣ isdigit() - проверяет, состоит ли строка из цифр.
"123".isdigit() → True1️⃣ 4️⃣ isalpha() - проверяет, только ли буквы.
"abc".isalpha() → True1️⃣ 5️⃣ isalnum() - буквы или цифры без пробелов.
"a1".isalnum() → True1️⃣ 6️⃣ islower() / isupper() - проверяет регистр.1️⃣ 7️⃣ zfill(width) - дополняет нулями слева.
"7".zfill(3) → "007"1️⃣ 8️⃣ format() - подставляет значения в строку.
"{}".format(5) → "5"1️⃣ 0⃣ f-строки (Python 3.6+) - удобный формат.
f"{5}" → "5"2️⃣ 0️⃣ in – проверка наличия подстроки.
"a" in "abc" → True
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥2🤩1
Срезы (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] (каждый второй элемент)
а также 13, 14, 17 и других номерах
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2🔥2
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() — ваш быстрый помощник, но применять его нужно с осторожностью!Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3
В Python строки сравниваются лексикографически (по алфавиту), символ за символом, слева направо, пока не найдётся различие.
print("abc" < "abd") # True - 'c' < 'd'
print("apple" < "banana") # True - 'a' < 'b'
print("abc" < "abcd") # True - вторая строка длиннее при одинаковом началеprint("A" < "a") # True - заглавные буквы идут перед строчными
print("Python" < "python") # True# print("10" < 5) # ОШИБКА TypeError - нельзя сравнивать строку с числом
print("10" < "5") # True - сравнивается первый символ '1' < '5'print("ё" > "е") # True - буква 'ё' в Unicode идёт после 'е'
print("💻" > "A") # True - эмодзи имеют большие кодыprint("abc" == "abc") # True - полное совпадение
print("abc" < "abcd") # True - одинаковое начало, но вторая длиннееprint("Python".lower() == "python".lower()) # True📎 Важно: == проверяет точное равенство, а <, >, <=, >= работают по алфавитному порядку.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤🔥2👍1
range(10**9) почти не занимает памяти? #tpyrange() хранит только начальное, конечное значения и шаг. Он не создает список всех чисел сразу, а генерирует числа по мере необходимости!
range(10**9) в памяти хранится лишь небольшая информация: - старт (по умолчанию 0)
- финиш (10^9)
- шаг (по умолчанию 1)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3👍3🔥2🥰1
else после for или while в Python? #useful Блок else выполняется только если цикл завершился без использования break.
🔹 Почему это удобно?:
Например, при поиске элемента в списке:
- Если элемент найден — срабатывает break, и блок else пропускается.
- Если элемент не найден — цикл завершится нормально, и else выполнится, позволяя обработать ситуацию.
# Поиск элемента в списке
numbers = [1, 3, 5, 7, 9]
target = 4
for num in numbers:
if num == target:
print("Элемент найден:", target)
break
else:
print("Элемент не найден:", target)
- Если target есть в списке, мы его найдём и выйдем из цикла через break.
- Если target отсутствует, цикл завершится нормально, и сработает блок else, сообщая, что элемент не найден.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2💘2😍1
pass, continue и break #tpy◈ pass -- Используется, когда синтаксически нужен код, но логика пока не написана, применяется как временная заглушка.
◈ continue -- пропускает остаток текущей итерации цикла и переходит к следующей.
◈ break -- полностью завершает выполнение цикла.
for i in range(5):
if i == 2:
pass # ничего
if i == 3:
continue # пропускаем i = 3
if i == 4:
break # выходим из цикла
print(i)
# Вывод: 0 1 2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤🔥2🤝2
Большая подборка сервисов на базе искусственного интеллекта #useful
По свежей статистике - больше половины пользователей в СНГ уже так или иначе используют нейросети: кто-то делает с их помощью учёбу, кто-то генерит мемы и ничего больше..
Сервисы которые возьмут на себя рутину учёбы и работы: от домашних заданий, рефератов и презентаций до отчётов, конспектов и даже дипломных проектов👨💻
❤🔥 — да, регулярно - это часть работы/учёбы
🔥 — нет, вообще не пользуюсь
👍 — редко, больше экспериментирую
#⃣ Вся теория для ЕГЭ в одном месте
➡ Программирование на Python | itpy 💻
По свежей статистике - больше половины пользователей в СНГ уже так или иначе используют нейросети: кто-то делает с их помощью учёбу, кто-то генерит мемы и ничего больше..
Сервисы которые возьмут на себя рутину учёбы и работы: от домашних заданий, рефератов и презентаций до отчётов, конспектов и даже дипломных проектов
🔠 Claude — создание текстов и ответов, анализ информации;🔠 Perplexity AI — поиск и суммаризация информации, ответы;🔠 Gamma / Tome — генерация презентаций и отчетов;🔠 MindMap AI — создание интеллектуальных карт и идей;🔠 PDF.ai — анализ PDF, извлечение информации, ответы;🔠 ChatPDF — чат с PDF-документами, понимание текста;🔠 QuillBot — перефразирование текстов, упрощение предложений;🔠 Grammarly — проверка орфографии, грамматики, стиля;🔠 LanguageTool — многоязычная проверка орфографии;🔠 WordyBot — генерация учебных и академических текстов с ссылками;🔠 Notion AI — организация заметок, автоматизация текста;🔠 StudyflowAI — помощь с домашкой, разбор вопросов, структурирование;🔠 Explainpaper — объяснение сложных научных статей;🔠 Study24.ai — создание шпаргалок и конспектов;🔠 TutorAI / TuranAI — виртуальный репетитор, подготовка;🔠 School Assistant AI — генерация учебных материалов;🔠 Wisdolia — создание карточек для запоминания;🔠 Slides AI — автоматическая генерация презентаций;🔠 Canva Magic Studio — визуальный контент, презентации и дизайн;🔠 Scribbr — проверка уникальности и плагиата;🔠 ReText — генерация академических текстов;🔠 RoboGPT — генерация дипломных и курсовых работ;🔠 Chad AI — генерация учебных материалов, эссе;🔠 CopyMonkey — генерация текстов и отчетов;🔠 NeuroTexter — создание академических текстов;🔠 Davinchi — бесплатная генерация дипломных работ;🔠 GigaChat – формирует структурированные научные тексты;🔠 AiWriteArt – генерация и редактирование текстов;🔠 Zaochnik GPT – создание дипломов и отчетов;🔠 StudyAI — помощь с домашними заданиями;🔠 EssayBot — автоматическая генерация эссе на английском;🔠 NeuralText — генерация текстов, идей и контента для учебы и проектов;🔠 texthandler — быстрое форматирование текста;🔠 Nana Banana — продвинутый генератор и редактор изображений.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤🔥2🤩1
Иногда при решении задач ЕГЭ (например 8 номера) учащиеся подключают модули с помощью записи:
from itertools import *
⚠️ Однако это может привести к конфликту имён и ошибкам в программе!
count = 0
from itertools import *
for p in permutations('abc'):
count += 1
print(count, p)
TypeError: unsupported operand type(s) for +=: 'type' and 'int'
⚙️ Причина в том, что в модуле itertools уже существует объект с именем count, и при импорте через * он перезаписывает нашу переменную count.
В итоге переменная становится функцией, и операция += 1 вызывает ошибку.
count = 0
from itertools import permutations
for p in permutations('abc'):
count += 1
print(count, p)
1 ('a', 'b', 'c')
2 ('a', 'c', 'b')
3 ('b', 'a', 'c')
4 ('b', 'c', 'a')
5 ('c', 'a', 'b')
6 ('c', 'b', 'a')🙂 теперь конфликт имен не возникает, так как мы импортировали, только то, что нам нужно, и count - это все так же наша переменная.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤🔥2🥰1