Это строка, содержащая числовые символы, из которых мы будем находить сумму:
s = '12345'
summa1 = 0
for x in s:
summa1 += int(x)
print(summa1) # 15
В этом варианте мы используем цикл
for
, чтобы пройти по каждому символу строки s
. Каждый символ преобразуем в число с помощью int(x)
и добавляем его к общей сумме summa1
.summa2 = 0
for i in range(0, 10):
summa2 += s.count(str(i)) * i
print(summa2) # 15
Здесь мы использовали метод
count
для подсчета количества вхождений каждой цифры от 0 до 9 в строке s
. Умножаем количество вхождений на само число и добавляем к summa2
.summa3 = sum(map(int, s))
print(summa3) # 15
Этот способ применяет функцию map, чтобы преобразовать каждый символ строки s в число. Используя sum, мы находим сумму всех чисел. Это краткий и эффективный способ.
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
Forwarded from Программирование на Python | itpy 💻
Метод
.append()
используется для добавления элемента в конец списка. Пример: my_list = [1, 2, 3]
my_list.append(4)
my_list.append(5)
print(my_list) # Вывод: [1, 2, 3, 4, 5]
Можно реализовать через конкатенацию (склеивание) списков:
my_list = [1, 2, 3]
my_list = [0] + my_list + [4, 5]
print(my_list) # Вывод: [0, 1, 2, 3, 4, 5]
Метод
.reverse()
изменяет порядок элементов в списке на обратный. Пример: my_list = [1, 2, 3, 4]
my_list.reverse()
print(my_list) # Вывод: [4, 3, 2, 1]
Можно записать по другому через срез:
my_list = [1, 2, 3, 4]
my_list = my_list[::-1]
print(my_list) # Вывод: [4, 3, 2, 1]
Метод
.count()
возвращает количество вхождений заданного элемента в список. Пример:my_list = [1, 2, 2, 3, 4, 2]
print(my_list.count(2)) # Вывод: 3
Метод .
remove()
удаляет первое вхождение указанного элемента из списка. Пример:my_list = [1, 2, 3, 2, 4]
my_list.remove(2) # Первая найденная двойка
print(my_list) # Вывод: [1, 3, 2, 4]
Можно удалить элемент через его индекс используя
del
:my_list = [1, 2, 3, 2, 4]
del my_list[1] # Индекс удаляемого элемента
print(my_list) # Вывод: [1, 3, 2, 4]
Метод
.index()
возвращает индекс первого вхождения заданного элемента в списке. Пример:my_list = [1, 2, 3, 2, 4]
print(my_list.index(2)) # Вывод: 1
Метод
.sort()
сортирует элементы списка по возрастанию (по умолчанию) или в обратном порядке, если передан аргумент reverse=True
. Пример:my_list = [4, 1, 3, 2]
my_list.sort()
print(my_list) # Вывод: [1, 2, 3, 4]
my_list.sort(reverse=True)
print(my_list) # Вывод: [4, 3, 2, 1]
Скажу честно я не любитель этого метода, считаю, что удобнее будет использовать функцию
sorted()
:my_list = [4, 1, 3, 2]
my_list = sorted(my_list)
print(my_list) # Вывод: [1, 2, 3, 4]
my_list = sorted(my_list, reverse=True)
print(my_list) # Вывод: [4, 3, 2, 1]
Азим вкатывается в IT | itpy 💻
Наш второй канал по подготовке к ЕГЭ
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Если у вас нет полного понимания того, как работает функция enumerate в Python, то давайте разберемся вместе. Метод enumerate() добавляет счетчик к элементам итерируемого объекта и возвращает объект типа enumerate. Этот объект содержит пары значений: индекс элемента и сам элемент из исходного списка.
Одним из главных преимуществ использования метода enumerate является возможность преобразования объектов типа enumerate в список или кортеж с помощью методов
list()
и tuple()
соответственно. Это облегчает работу с индексами элементов списка и упрощает процесс перебора элементов в цикле.Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7 3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Обработка исключений играет важную роль в программировании, так как ошибки могут привести к непредсказуемым последствиям и прерыванию работы скрипта.
Одним из способов обработки исключений в Python является конструкция try-except. Она позволяет выполнить определенный код в блоке try, и если во время его выполнения возникает ошибка, перехватить и обработать эту ошибку в блоке except.
Пример использования:
try:
# уязвимая функция
except Exception as e:
print(f"Произошла ошибка: {e}")
# код обработки ошибки
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤🔥2 2
Forwarded from Программирование на Python | itpy 💻
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
subset = my_list[2:5]
print(subset) # Вывод: [3, 4, 5]
Здесь мы извлекаем подсписок, начиная с индекса 2 и заканчивая индексом 5 (не включая). Это полезно, когда нам нужна определенная часть списка.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
subset = my_list[1::2]
print(subset) # Вывод: [2, 4, 6, 8, 10]
В этом примере мы извлекаем каждый второй элемент, начиная с индекса 1, то есть все нечетные ИНДЕКСЫ.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
reverse_list = my_list[::-1]
print(reverse_list) # Вывод: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Использование среза с отрицательным шагом позволяет нам легко создать список в обратном порядке.
my_string = "Hello, World!"
substring = my_string[7:12]
print(substring) # Вывод: "World"
В данном случае, мы извлекаем подстроку, начиная с индекса 7 и заканчивая индексом 12 (не включая). Это полезно для работы с текстовыми данными.
my_string = "Hello, World!"
substring = my_string[::2]
print(substring) # Вывод: "Hlo ol!"
Использование среза с шагом 2 помогает нам извлекать каждый второй символ из строки.
my_string = "Hello, World!"
reverse_string = my_string[::-1]
print(reverse_string) # Вывод: "!dlroW ,olleH"
Также, как и в случае с списками, срез с отрицательным шагом позволяет легко получить строку в обратном порядке.
Использование срезов делает код более эффективным и читаемым. Практикуйтесь в их применении, и вы обнаружите, насколько они улучшают ваши навыки работы с данными в Python.
Азим вкатывается в IT | itpy 💻
Наш второй канал по подготовке к ЕГЭ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7 3 3
Forwarded from Программирование на Python | itpy 💻
This media is not supported in your browser
VIEW IN TELEGRAM
При подготовке к ЕГЭ по информатике важно уметь работать с различными системами счисления для таких номеров как 5 и 14. Сегодня разберем универсальную функцию на Python, которая позволяет перевести число из десятичной системы счисления в любую другую (от 2 до 36).
1. Импортируем необходимые символы:
from string import *
Здесь используются модули digits и ascii_uppercase, чтобы задать доступные символы для различных систем счисления.
2. Образуем строку alphabet:
alphabet = digits + ascii_uppercase
Эта строка содержит все символы, используемые в системах счисления: цифры от 0 до 9 и заглавные английские буквы от A до Z.
3. Основная функция convert:
def convert(n, b):
r = ''
while n > 0:
r += alphabet[n % b]
n //= b
return r[::-1]
Функция convert принимает два параметра: число n в десятичной системе и основание b, в которое его нужно перевести. Внутри цикла проводится деление числа n на основание b с остатком, который используется для получения соответствующего символа из alphabet. Собранные символы переворачиваются в обратном порядке для получения правильного представления числа в новой системе.
4. Примеры использования:
n = 15552
print(convert(n, 2)) # Перевод в двоичную систему
print(convert(n, 8)) # Перевод в восьмеричную систему
print(convert(n, 16)) # Перевод в шестнадцатеричную систему
print(convert(n, 3)) # Перевод в троичную систему
Эти примеры показывают, как использовать функцию для перевода числа 15552 в различные системы счисления.
Более короткий вариант написания этой функции оставлю в комментариях к этому посту, не стесняйтесь ставить реакции на этот пост
Информатика ЕГЭ | itpy
Второй канал про теорию Python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥33🔥10👍7 6
Forwarded from Программирование на Python | itpy 💻
Регулярные выражения — мощный инструмент для поиска и анализа текстовых данных. В заданиях ЕГЭ по информатике (задание 24) они часто используются для поиска числовых последовательностей по определённому шаблону. Разберём основные приёмы на примерах из реальных задач.
Общая структура большинство решений строится по следующему шаблону:
from re import *
s = open('24.txt').readline()
# num — шаблон отдельного числа
# reg — шаблон всей последовательности
reg = rf'{num}([+*]{num})*'
matches = [x.group() for x in finditer(reg, s)]
maxi = max(len(x) for x in matches)
print(maxi)
Пример 1: Поиск последовательностей чисел от 7, 8, 9, 0 (№ 20813 #kege)
num = r'([789][0789]*|[0])'
reg = rf'{num}([-*]{num})*'
Пример 2: Работа с буквами и диапазоном 1–6 (№ 18619 #kege)
s = s.replace('A', ' ').replace('C', ' ').replace('D', ' ')
num1 = r'[B]([1-6][1-6]*)'
num2 = r'([1-6][1-6]*)'
reg = rf'{num1}([-*]{num2})*'
Пример 3: Подсчёт количества чисел (№ 18285 #kege)
num = r'([1-9][0-9]*)'
reg = rf'{num}([+*]{num})*'
Пример 4: Сумма выражений (№ 18147 #kege)
num = r'([789]+)'
reg = rf'{num}([+]{num})+'
Определение чисел:
r'([1-9][0-9]*)' - натуральные числа (без ведущих нулей)
r'([0-9]+)' - любые целые числа
r'([789][0789]*)' - числа, начинающиеся с 7,8 или 9
Операции между числами:
([+*]{num})* - повторяющиеся операции + или *
([-+*]{num})* - операции -, + или *
Специальные условия:
Окончание на определенные цифры: [05]
Начало с определенных букв: [AFD]
Регулярные выражения - это мощный инструмент, который требует практики. Разбирая подобные задачи, вы лучше поймете их синтаксис и возможности.
Второй канал про теорию Python
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤7🔥3👍2
Forwarded from Программирование на Python | itpy 💻
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
any()
вернет True
, если хотя бы одно значение в последовательности — истина.has_divisor(9)
возвращает True, потому что 9 делится на 3.💡 Кратко:
all()
— возвращает True, если все элементы истинны.any()
— возвращает True, если хотя бы один элемент истинен.Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9 3 2
Ответ:
В Python блок else после цикла for или while выполняется только в том случае, если цикл завершился нормально, то есть без использования break.
➡Программирование на Python | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥10👍4🔥3 2
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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8 4🔥3
Это строка, содержащая числовые символы, из которых мы будем находить сумму:
s = '12345'
summa1 = 0
for x in s:
summa1 += int(x)
print(summa1) # 15
В этом варианте мы используем цикл
for
, чтобы пройти по каждому символу строки s
. Каждый символ преобразуем в число с помощью int(x)
и добавляем его к общей сумме summa1
.summa2 = 0
for i in range(0, 10):
summa2 += s.count(str(i)) * i
print(summa2) # 15
Здесь мы использовали метод
count
для подсчета количества вхождений каждой цифры от 0 до 9 в строке s
. Умножаем количество вхождений на само число и добавляем к summa2
.summa3 = sum(map(int, s))
print(summa3) # 15
Этот способ применяет функцию map, чтобы преобразовать каждый символ строки s в число. Используя sum, мы находим сумму всех чисел. Это краткий и эффективный способ.
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
присутствуют нечисловые символы.Please open Telegram to view this post
VIEW IN TELEGRAM
4❤🔥9 4🤯3
Срезы (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
👍7❤🔥5🔥4 2
float
в Python? #tpyОтвет:
Почему так происходит:
Число 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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥3😁1
Если раньше для подстановки переменных в строку мы писали:
"Привет, {}!".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
👍15❤9
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
❤🔥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
Теперь ты можешь обходить все эти коллекции как один поток, не тратя лишнюю память
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍10❤🔥2🔥2