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
Они очень сильно экономят место и время
def is_prime(n):
return n > 1 and all(n % i for i in range(2, int(n**0.5)+1))
def centr(x):
return min((sum(dist(p,k) for k in x), p) for p in x)[1]
Функция dist() определяется в зависимости от условия задачи
def divisors(n):
return {x for d in range(2, int(n**0.5)+1) if n%d==0 for x in (d, n//d)}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4🥰2
Python сравнение int и float? #tpyВ Python целые числа (
int ) и числа с плавающей точкой ( float ) обычно сравниваются интуитивно -- 5 == 5.0 возвращает True. Но иногда могут возникнуть неожиданные результаты из-за особенностей представления чисел с плавающей точкой по стандарту IEEE-754.
print(10 == 10.0) # True
print(3 + 0.1 == 3.1) # True
print(0.1 + 0.2 == 0.3) # False
Причина в том, что
float хранится в двоичной форме, и не все десятичные дроби можно точно представить.Поэтому прямое сравнение иногда даёт неожиданный результат.
import math
math.isclose(0.1 + 0.2, 0.3) # True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤩3🥰1
all() и any() -- как они работают на практике #tpyall() Возвращает True только если все элементы коллекции оцениваются как True (или если коллекция пустая).
# Пример с числами
numbers = [2, 4, 6, 8]
result = all(x % 2 == 0 for x in numbers) # Проверяем, все ли чётные
print(result) # True ✔️
numbers = [2, 4, 5, 8]
result = all(x % 2 == 0 for x in numbers)
print(result) # False ❌ (5 нечётное)
any() Возвращает True если хотя бы один элемент коллекции True.
# Пример с поиском положительных чисел
values = [-5, -2, 0, 3, -1]
result = any(x > 0 for x in values) # Есть ли хотя бы одно положительное?
print(result) # True ✔️ (3 > 0)
values = [-5, -2, -1, 0]
result = any(x > 0 for x in values)
print(result) # False ❌ (все неположительные)
-
all() -- как логическое И ( and ) для всех элементов-
any() -- как логическое ИЛИ ( or ) для всех элементов📎 Важно: обе функции работают с генераторами и не вычисляют все значения, если результат уже ясен:
-
all() остановится на первом False-
any() остановится на первом True# all() остановится на 0 (False)
all([1, 2, 0, 4, 5]) # False
# any() остановится на 3 (True)
any([0, False, 3, 0, 0]) # True
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4🫡3🔥2❤1🤩1
PEP -- что это и зачем нужно #tpyPEP (Python Enhancement Proposal) -- те документы, в которых описываются:• Новые функции языка
• Изменения стандартной библиотеки
• Концепции и соглашения сообщества
Python происходит через PEP. Любой участник сообщества может предложить новый PEP, но он проходит обсуждение перед принятием.Каждый
PEP имеет уникальный номер, который не меняется.Основные
PEP:• PEP 0 -- индекс всех предложений
• PEP 8
-- стиль написания кодаИзучение PEP помогает понимать развитие языка и писать качественный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3❤🔥2🔥2