Репетитор IT men
13.6K subscribers
1.1K photos
23 videos
33 files
959 links
Блог с заметками преподавателя по математике, физике, информатике. Рассказываю о задачах, о способах их решения.

vk.com/itmentor
dzen.ru/itmentor
https://www.youtube.com/@it_men

Автор: @physicist_i

№ 6046073444
Download Telegram
Задача по программированию на Python

▪️ 1 способ:
Зеркальное отображение числа так как будто это число.
Плюсы: работа с числами всегда быстрее
Минусы: в случае окончания числа на 0 получается не совсем верное отображение( Пример: 560 —> 65 )

▪️ 2 способ:
Работа с числом как со строкой. Создается новая строка и с помощью конкатенации к ней присоединяются все символы исходной строки, начиная с конца. Отображает зеркально все символы.
( Пример: 560 —> 065 ). Остается вопрос: можно ли считать 065 тоже натуральным числом? Нет. Поэтому условие задачи не вполне корректное.

▪️ 3 способ:
Использование срезов для строк. Результат аналогичен второму.

Знаете еще способ? Напишите в комментариях ☺️✏️

#задачи #python #информатика #программирование
👍14
💡 Как перенести названия всех файлов текущей директории в текстовый файл .txt в Python?

Решил написать небольшой скрипт на Python. Повседневная задача редактора технического канала: Перенести названия всех файлов из нужной директории (задается путем), и записать их в текстовый файл example.txt с добавлением номеров каждого файла. Записать имена в файл с предварительной сортировкой по дате создания (или скачивания). Рассказываю как это реализовать на Python в несколько строк...

👨🏻‍💻 Читать заметку полностью

#python #файлы #информатика
#программирование #OS
👍9🔥2👎1
👨🏻‍💻 Парсинг Excel-файлов на Python на примере задачи из ЕГЭ по информатике

Сегодня разберем с вами довольное сложное 22 задание. Здесь стоит дать пояснения. Составители ЕГЭ каждый раз выдумывают что-то новое, поэтому никогда не знаешь, что ожидать в следующий раз. Недавно на занятиях с учениками попалась задача, которая не решается обычными формулами, встроенными в Excel (во всяком случае я не знаю, как её автоматизировать средствами ТОЛЬКО Excel). И тут повезло, что таблица была небольшой, поэтому можно было решить задачу руками. Но я сразу же задумался над тем, а что если записей в ней было бы гораздо больше? Что если руками решать было бы не целесообразно, потому что это заняло бы бесконечно большое время, которого нет на экзамене? Как же тогда автоматизировать решение? Об этом мы сегодня с вами и поговорим...

💡 Читать статью полностью

Заваривайте чай, здесь нужно будет посидеть и подумать...☕️🫖

#парсинг #excel #python #ЕГЭ
#программирование #информатика #анализ_данных #разбор_задач
👍72🔥2
📝 Метод Якоби: решение СЛАУ методом итерации

Для решения систем линейных алгебраических уравнений (СЛАУ) большой размерности, а также систем, имеющих разреженные матрицы, применение точных методов (например, метод Гаусса) не является целесообразным, так как...

👨🏻‍💻Читать статью полностью 📝

#программирование #математика
#python #разбор_задач #численные_методы
👍133🔥1
Задача 15.2 из ОГЭ: Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, оканчивающееся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 4. Количество чисел не превышает 1000. Введенные числа не превышают 30 000. Программа должна вывести одно число  — минимальное число, оканчивающееся на 4.

👩‍💻 Задачу можно решить и в пару строк, но здесь уже сильно снизится понимание. Покажу пример:

N = int(input("Введите количество чисел: "))
print("Ответ: ", min([ x for x in [int(input("x = ")) for x in range(N)] if x % 10 == 4 ]))


👩‍💻 Цикл for дает лучшее понимание:
N = int(input("Введите количество чисел:"))
mi = 30000
for k in range(N):
number = int(input("Текущее число: "))
if (number % 10 == 4) and (number < mi):
mi = number
print("Минимальное число, оканч-ся на 4: ", mi)


👩‍💻 Но самый оптимальный и понятный код получается с помощью цикла while, которые дает возможности тонкой настройки цикла, что иногда нужно, если наперед не задано точное количество итераций:
N = int(input("Введите количество чисел: "))
min_4 = 30000
k = 1
while k <= N:
number = int(input("Текущее число: "))
if (number % 10 == 4) and (number < min_4):
min_4 = number
k = k + 1
print("Минимальное число, оканч-ся на 4: ", min_4)


#информатика #программирование #computer_science #алгоритмы #python

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163😍2🔥1
📝 Тип 5. У исполнителя Альфа две команды. которым присвоены номера:
1. Вычти b;
2. Умножь на 5.
(b  — неизвестное натуральное число).
Выполняя первую из них, Альфа уменьшает число на экране на b, а выполняя вторую, умножает это число на 5. Программа для исполнителя Альфа  — это последовательность номеров команд. Известно, что программа 21121 переводит число 2  в число 17. Определите значение b.


🖥 Решение:

Всегда с учениками решали эту задачу аналитически (так вроде быстрее). Но на последнем занятии я подумал, а если алгоритм будет сложный, можно ли написать что-то универсальное? Например, программу, которую можно будет масштабировать до любого количества инструкций любой сложности... И вот пришла такая идея:

def f1(x, b): return x - b
def f2(x): return 5*x

def solution(N, program):
list_digits = list(program)
for b in range(1, 1000):
res = N
for char in list_digits:
if char == '1': res = f1(res, b)
if char == '2': res = f2(res)
if res == 17:
print("b = ", b)
break
N = 2
program = '21121'
solution(N, program)


#информатика #программирование #computer_science #алгоритмы #python

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3❤‍🔥1😍1
🖥 Как применить Python для упрощения решений задач по информатике

Привет, ребятки! Сегодняшняя заметка будет состоять из разбор 6 задач уровня 9 класса (ОГЭ). Задачки можно решить аналитически, но мы попробуем их закодить, решить методом перебора. Все эти задачи будут полезны учащимся средней школы для тренировки навыков программирования. Реализация примеров выполнена с помощью Python.

🖥 Читать заметку полностью

#разборы_задач #Python #ОГЭ #информатика #алгоритмы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9👍5🔥41👨‍💻1
🖥 Помните предыдущие два поста про примитивные callback-функции и фильтрующие функции? Может возникнуть вопрос, а можно ли, реализовать свой аналог reduce() ?

Давайте сразу напишем такой пример:
numbers = [1, 11, 12, 13, 18, 9, 8, 6]

from functools import reduce

func = lambda acc, cur : acc + cur

total = reduce(func, numbers, 0)
print('Встроенная reduce: ',total)

def _reduce(callback, collection, init = 0):
acc = init
for k in collection:
acc = callback(acc, k)
return acc

_total = _reduce(func, numbers)
print('Моя reduce: ',_total)


Теперь объясним параметры и работу конструкции:
result = reduce( function, iterable[, initializer] ) :
▫️function — функция, применяемая к элементам итерации. Она должна принимать два аргумента.
▫️iterable — итерируемый объект, элементы которого вы хотите уменьшить. Это может быть список, кортеж или любой другой итерируемый объект.
▫️initializer — (необязательно): начальное значение аккумулятора (накопителя). Оно используется в качестве первого аргумента при первом вызове функции, если оно предусмотрено.

⚠️ Обработка пустых итераций: Одной из распространенных ошибок при использовании функции reduce() является обработка пустых итераций. Передача пустой итерации в reduce() без инициализатора вызывает Ошибку типа поскольку нет начального значения для запуска процесса сокращения. Чтобы избежать этого, всегда указывайте инициализатор, когда итерируемый объект может быть пустым.

⚙️ Производительность:
▫️ Эффективность reduce() по сравнению с циклами: Функция reduce() может быть более эффективной, чем явные циклы, потому что она реализована на C, что может обеспечить преимущества в производительности. Однако это преимущество часто незначительно и зависит от сложности применяемой функции.
▫️Преимущества использования встроенных функций в производительности: Встроенные функции, такие как sum(), min(), и max() высоко оптимизированы с точки зрения производительности. Они реализованы на C и могут выполнять операции быстрее, чем эквивалентный код Python с использованием reduce().

🖥 Зачем разработчикам нужна функция reduce() ? Функция reduce() полезна при итеративной обработке данных, избегая явных циклов и делая код более читаемым и кратким. Некоторые распространенные варианты использования включают:
▫️ Суммирование чисел в списке: Быстрое суммирование всех элементов.
▫️ Умножение элементов итеративного элемента: Вычисление произведения элементов.
▫️ Объединение строк: Объединение нескольких строк в одну.
▫️ Нахождение максимального или минимального значения: Определение самого большого или самого маленького элемента в последовательности.

#python #разработка #программирование #IT #алгоритмы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍53🤯2
В этой заметке рассмотрим задачу с реального собеседования на Python-разработчика

Мы уже ознакомились с lambda-функциями и где они используются. Сейчас же исследуем вырванный из контекста реальный код и задания к нему.

🖥 Исходный код:
def get_first_matching_object(predicate,objects=[]):
matching_objects = (obj for obj in objects if predicate(obj))
if matching_objects:
object = matching_objects[0]
return object
return None

print(get_first_matching_object(lambda x: x == 1, [2, 3, 4]))


▪️ Что не так с кодом ? Если мы запустим в таком виде, то получим TypeError: 'generator' object is not subscriptable. Это означает, что объект-генератор matching_objects представляет собой итератор: он генерирует значения в том порядке, в котором они запрашиваются циклом for или вызовом next(matching_objects). Однако, дальше по коду пытаются получить доступ по индексу так, как будто это список или любой другой Sequence-тип, который позволяет получать доступ к произвольным k-м элементам через matching_objects[k]. Если мы хотим, чтобы всё работало, нам нужно преобразовать в список list() или закрыть генератор в квадратные скобки: matching_objects = [obj for obj in objects if predicate(obj)]

▪️ Что код делает ? Есть некоторая функция, которая принимает в себя callback-функцию predicate и набор объектов (пустой по дефолту). Далее у нас как-то формируется список помеченных объектов, которые попадают в новый список только в том случае, если callback-функция возвращает для них True. Следующая конструкция говорит нам о том, что если полученный список matching_objects не пустой, то мы выделяем первый входящий в него объект и возвращаем его. В противном случае возвращается None. Но последняя строчка не является обязательной. Потому что, в случае НЕсрабатывания условного оператора, у нас итак вернется None.

▪️ Что выведет на экран, если его исправить? Судя по тестовым параметрам, переданная lambda-функция ни на одном из элементов объекта [2, 3, 4] не вернет True. Поэтому список matching_objects окажется пустым, в итоге нам вернется None.

▪️ Функция оптимизирована? Нет. Дело в том, что она перебирает все остальные элементы (тратит память и время выполнения), когда мы можем ограничиться рассмотрением первого подходящего. Тогда код можно исправить так:
def get_first_matching_object(predicate,objects=[]):
for obj in objects:
if predicate(obj):
return obj
return None

print(get_first_matching_object(lambda x: x == 1, [1, 2, 3, 4])) # 1

▪️ Какая сложность выполнения данной функции? В худшем случае: O(n) ; в лучшем случае : O(1).

#python #разработка #программирование #IT #алгоритмы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥64
💡 Как перенести названия всех файлов текущей директории в текстовый файл .txt в Python?

Решил написать небольшой скрипт на Python. Повседневная задача редактора технического канала: Перенести названия всех файлов из нужной директории (задается путем), и записать их в текстовый файл example.txt с добавлением номеров каждого файла. Записать имена в файл с предварительной сортировкой по дате создания (или скачивания). Рассказываю как это реализовать на Python в несколько строк...

👨🏻‍💻 Читать заметку полностью

#python #файлы #информатика #программирование #OS

💡 Репетитор IT mentor // @mentor_it
👍112🔥1🤨1
🐍 Циклы и их прерывания в Python: алгоритм поиска в строке

Это заметка будет для начинающих, которые только знакомятся с программированием, информатикой и с языком Python, в частности. Вчера мы с учеником изучали циклы и некоторые операторы, которые дают возможность управлять циклами. В этой небольшой статье я покажу несколько примеров. При этом от совсем простых абстракций постараемся углубиться в более полезные вещи с практической точки зрения. [ Уровень сложности: ~7..8 класс ]

👨🏻‍💻 Читать заметку полностью

#python #алгоритмы #информатика #программирование #циклы

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1😢1🤩1
👩‍💻 Перевод из 10-чной системы счисления в систему счисления с основание base ∈ [2; 16]

# Перевод из десятичной в двоичную
# Пример: вход: x = 589 и base = 16
# выход: 24D
def dec_to_base(x, base):
digits = ['0','1','2','3','4','5','6',
'7','8','9','A','B','C','D','E','F']
copy = x
s = ''
while copy > 0:
rest = copy % base
copy = copy // base
s = digits[rest] + s
return s

x = 589
base = 16
print(f'{x} в {base}-чной СС: {dec_to_base(x,base)}')


👩‍💻 OUTPUT: 589 в 16-чной СС: 24D

#разбор_задач #программирование #информатика #python #code #computer_science

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤‍🔥4👨‍💻21🔥1
📝 Теория чисел в школьной задаче: аналитическое решение + кодинг

Сегодня с учениками разбирали программирование и я получил такой вопрос: «Можно ли запрограммировать задачу 17-го типа из ВПР по математике?». Что ж... И мы это с вами сделаем.

🖥 Задача: Задумали трехзначное число, все цифры которого различны и вторая цифра которого чётная. Из него вычли трехзначное число, записанное теми же цифрами в обратном порядке. Получили число 792. Найдите разность наибольшего и наименьшего чисел, удовлетворяющих таким условиям.

📝 Читать полный разбор 📱

#егэ #огэ #информатика #математика #разбор_задач #python

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥6🤔21🤩1
💸 Неочевидная математика банковской системы

В этой статье я расскажу как обычных людей вводят в заблуждение... обманывают банки. Вам всегда будет казаться, что кредит — это небольшая переплата, пока вы не сядете за черновик и не просчитаете всё самостоятельно (или не почитаете эту статью, в которой я всё посчитал за вас).

Математика и банковская система... Как они работают? Сегодня я расскажу вам удивительную историю о том, что система всегда будет работать против вас, при этом она всегда будет создавать красочную иллюзию того, чтоб призвана помогать вам. Хотя на самом деле, система вас уничтожит, как только вы потеряете внимательность.

👨🏻‍💻 Читать заметку полностью

#финансы #python #экономика #математика #бизнес #мошенничество

💡 Репетитор IT mentor // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4💯31
👨🏻‍💻 Рекурсия и задача с исполнителем из ЕГЭ по информатике

Недавно разбирали с учеником 23 задачу из ЕГЭ по информатике. Хотел бы поделиться своими мыслями и некоторыми лайфхаками решения этой задачи с моими дорогими подписчиками. Очень надеюсь, что кому-нибудь эта заметка будет полезна или хотя бы интересна. Поэтому прошу не поскупиться на обратную связь, если эта тема интересна. А пока погнали начинать, сразу с практики :)

💡 Читать статью

📝 Задача:
... Сколько существует таких программ, которые исходное число 3 преобразуют в число 12 и при этом траектория вычислений программы содержит число 10?.. #рекурсия #программирование #python #ЕГЭ

💡 Репетитор IT mentor // @mentor_it
👍8🔥42
📝 Метод Якоби: решение СЛАУ методом итерации

Для решения систем линейных алгебраических уравнений (СЛАУ) большой размерности, а также систем, имеющих разреженные матрицы, применение точных методов (например, метод Гаусса) не является целесообразным, так как...

👨🏻‍💻Читать статью полностью 📝

#программирование #математика #python #разбор_задач #численные_методы

💡 Репетитор IT men // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥43
👨🏻‍💻 Парсинг Excel-файлов на Python на примере задачи из ЕГЭ по информатике

Сегодня разберем с вами довольное сложное 22 задание. Здесь стоит дать пояснения. Составители ЕГЭ каждый раз выдумывают что-то новое, поэтому никогда не знаешь, что ожидать в следующий раз. Недавно на занятиях с учениками попалась задача, которая не решается обычными формулами, встроенными в Excel (во всяком случае я не знаю, как её автоматизировать средствами ТОЛЬКО Excel). И тут повезло, что таблица была небольшой, поэтому можно было решить задачу руками. Но я сразу же задумался над тем, а что если записей в ней было бы гораздо больше? Что если руками решать было бы не целесообразно, потому что это заняло бы бесконечно большое время, которого нет на экзамене? Как же тогда автоматизировать решение? Об этом мы сегодня с вами и поговорим...

💡 Читать статью полностью

Заваривайте чай, здесь нужно будет посидеть и подумать...☕️🫖

#парсинг #excel #python #ЕГЭ #программирование #информатика #анализ_данных #разбор_задач

🤔 Репетитор IT men // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥3😱1
Задача 15.2 из ОГЭ: Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, оканчивающееся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 4. Количество чисел не превышает 1000. Введенные числа не превышают 30 000. Программа должна вывести одно число — минимальное число, оканчивающееся на 4.

👩‍💻 Задачу можно решить и в пару строк, но здесь уже сильно снизится понимание. Покажу пример:

N = int(input("Введите количество чисел: "))
print("Ответ: ", min([ x for x in [int(input("x = ")) for x in range(N)] if x % 10 == 4 ]))


👩‍💻 Цикл for дает лучшее понимание:
N = int(input("Введите количество чисел:"))
mi = 30000
for k in range(N):
number = int(input("Текущее число: "))
if (number % 10 == 4) and (number < mi):
mi = number
print("Минимальное число, оканч-ся на 4: ", mi)


👩‍💻 Но самый оптимальный и понятный код получается с помощью цикла while, которые дает возможности тонкой настройки цикла, что иногда нужно, если наперед не задано точное количество итераций:
N = int(input("Введите количество чисел: "))
min_4 = 30000
k = 1
while k <= N:
number = int(input("Текущее число: "))
if (number % 10 == 4) and (number < min_4):
min_4 = number
k = k + 1
print("Минимальное число, оканч-ся на 4: ", min_4)


#информатика #программирование #computer_science #алгоритмы #python

💡 Репетитор IT men // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31🍓1👨‍💻1💘1
✍🏻 Решать аналитически или кодить 🖥

Рассмотрим 2 задачу из ЕГЭ по информатике. На мой взгляд, полезно совмещать эти варианты, чтобы быть уверенным в ответе.

▪️ В аналитическом решении нужно рассмотреть все строки, начиная с максимально заполненной. Важно держать в голове, что все строки уникальные (комбинации не повторяются, порядок имеет значение). Таким образом, мы последовательно открываем соответствия x, y, z исходным переменная_1, переменная_2, переменная_3.

▪️ При моделировании задачи и перебору подходящих решений, мы сразу получаем нужные комбинации, но чтобы понять как они расположены в таблицы, всё равно приходится осмысливать эти комбинации на черновике.

Много интересных статей на моём канале в Дзен:
📱 Репетитор IT men

#математика #информатика #егэ #разбор_задач #python #computer_science

💡 Репетитор IT men // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍542🔥2🎅1🎄1💘1
📝 Разбор задачи #5 из ЕГЭ по информатике

▪️Тот случай, когда аналитически решить может быть быстрее, потому что уже следующее значение R = 78 удовлетворяет решению и даёт N = 19.

▪️Но код тоже можно написать. Понадобится функция algo(), которая будет добавлять нужный бит в конец двоичного представления. Написать можно по-разному. Приведу лишь решение, которое мне пришло первым в голову.

🖥 Код в Python:
def algo( N ):
lst = list(map(int, list(bin(N)[2:])))
digit = str(sum(lst) % 2)
return int(bin(N)[2:] + digit, 2)

for N in range(1000):
R = algo(algo(N))
if R > 77:
print(f"N = {N}")
break


А как бы вы закодили решение данной задачи?

Ещё полезные заметки: Callback в Python и О лямбда-функциях в Python и Reduce в Python и Задача с собеседования

#python #разработка #программирование #IT #алгоритмы

💡 Репетитор IT men // @mentor_it
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥2👨‍💻2