🧑💻 Всем доброе утро, пора бы взяться за степик. Задание — Факториал (7.3)
Подается натуральное число:
⭕️ Если заглянуть в текстовые данные, то n <= 12, поэтому сначала сделаем решение по условию.
Затем, счетчик для произведения:
Теперь, условный оператор в зависимости от нашего условия:
Основной цикл:
Ну, и последнее:
🔗 Сам код:
Подается натуральное число:
n = int(input())
⭕️ Если заглянуть в текстовые данные, то n <= 12, поэтому сначала сделаем решение по условию.
Затем, счетчик для произведения:
total = 1 # Счетчик равен 1 потому что это произведение, ну это так)
Теперь, условный оператор в зависимости от нашего условия:
if n <= 12:
Основной цикл:
total = total * i — эту запись сократим (тут если че наш счетчик для произведения умножается на счетчик цикла, так и получим факториал)for i in range(1, n + 1):
total *= i
Ну, и последнее:
print(total)
🔗 Сам код:
n = int(input())
total = 1
if n <= 12:
for i in range(1, n + 1):
total *= i
print(total)
10🤯3🥰1👨💻1👀1
🧑💻❤️ Гайс привет, сильно устаю за эти дни, надеюсь, вы меня поймете. В любом случае, завтра выкачу хороший пост, мб о машинке, мб код с вами разберем, а может и задание с ЕГЭ, в общем, проголосуете.
🔗 Разберем быстренько задание 'Без нулей'
🟰 Программа считывает числа (отличные от нуля) и выводит их произведение, вроде ниче сложного🟰
0️⃣ Для начала, счетчик для произведения (будет хранить результат):
1️⃣ Было бы с кайфом, если бы на каждой итерации цикла мы вводили число, так и запишем:
2️⃣ Ну и условие не забудем, нам как никак нули не нужны:
3️⃣:
🔗 Сам код:
🔗 Разберем быстренько задание 'Без нулей'
🟰 Программа считывает числа (отличные от нуля) и выводит их произведение, вроде ниче сложного🟰
0️⃣ Для начала, счетчик для произведения (будет хранить результат):
total = 1
1️⃣ Было бы с кайфом, если бы на каждой итерации цикла мы вводили число, так и запишем:
for i in range(10):
num = int(input())
2️⃣ Ну и условие не забудем, нам как никак нули не нужны:
if num != 0:
total *= num
3️⃣:
print(total)
🔗 Сам код:
total = 1
for i in range(10):
num = int(input())
if num != 0:
total *= num
print(total)
10🥰3🤯1👨💻1👀1
Разберем еще один код, выглядит очень уж интересно. (Задание 'Без нулей')
🔗 Тут используется вложенный генератор списка, 🟰
🔗 Внешний генератор —
🔗 i — это каждый элемент, который получается из внутреннего списка:
🔗 Внутренний список содержит 10 чисел, введённых пользователем через
🔗 Затем внешний генератор
🔗 Если условие
🔗 Сам код:
🔗 Тут используется вложенный генератор списка, 🟰
for _ in range(10)🟰 — цикл выполняется 10 раз и каждый раз запрашивает число от пользователя (нас) с помощью 🟰input()🟰🔗 Внешний генератор —
[i for i in [] if i != 0] — здесь цикл for проходит по всем элементам списка, созданного на предыдущем шаге.🔗 i — это каждый элемент, который получается из внутреннего списка:
[int(input()) for _ in range(10)]🔗 Внутренний список содержит 10 чисел, введённых пользователем через
input()🔗 Затем внешний генератор
[i for i in [] if i != 0] проходит по каждому элементу списка, а переменная i представляет текущее значение из этого списка на каждой итерации.🔗 Если условие
if i != 0 выполняется (то есть i не равно 0), то это значение i добавляется в итоговый список nums[].nums = [i for i in [int(input()) for _ in range(10)] if i != 0]
🔗 Сам код:
nums = [i for i in [int(input()) for _ in range(10)] if i != 0]
result = 1
for item in nums:
result *= item
print(result)
20🥰3🤯1👨💻1👀1
🧑💻 Я вечером подробно постараюсь разобрать на примере, как работает данный генератор
1🤯4🥰2
🧑💻 Итак, тут внешний генератор и внутренний, что какой делает, ща быстро разберем и я пойду спать:
Внутренний:
Если введем: 1, 1, 5, 3, 2, 4, 0, 2, 11, 0 → внутренний список будет: [1, 1, 5, 3, 2, 4, 0, 2, 11, 0 ]
Внешний генератор
По итогу, сначала создается временный список с помощью внутреннего генератора: 🟰
Всем споки 💤
Внутренний:
[int(input()) for _ in range(10)]: — здесь, цикл for на каждой итерации вызывает input(), который запрашивает ввод пользователя.Если введем: 1, 1, 5, 3, 2, 4, 0, 2, 11, 0 → внутренний список будет: [1, 1, 5, 3, 2, 4, 0, 2, 11, 0 ]
Внешний генератор
[i for i in [] if i != 0]: — Цикл проходит по каждому элементу списка (который мы создали во внутреннем генераторе), переменная i последовательно будет принимать значения каждого элемента из этого списка.nums = [i for i in [int(input()) for _ in range(10)] if i != 0]
По итогу, сначала создается временный список с помощью внутреннего генератора: 🟰
[int(input()) for _ in range(10)]🟰 Затем, внешний генератор проходит по каждому элементу временного списка, отбирая только те элементы, которые не равны нулю: 🟰[i for i in ... if i != 0]🟰Всем споки 💤
25🥰3🤯2👨💻1👀1
Всем доброе утро! 📈
👨🏼💻Расскажу вам про обучение с подкреплением — еще один тип машинного обучения, примеры таких моделей, вы, наверняка уже встречали (об этом дальше).
Итак, в этом типе машинного обучения никакие данные не передаются и мы «должны заставить компьютер выполнить задачу»
◽️Суть в том, что у нас есть какая-то окружающая среда, в этой среде агент (это программа или модель, которая принимает решение и потом выполняет действия на основе этих решений, агент взаимодействует со средой и на основе её откликов корректирует своё поведение).
◽️Состояние — это информация о текущем положении агента в среде. В каждый момент времени агент находится в каком-то состоянии.
◽️Также есть действия, которые агент выбирает на основе текущего состояния.
◽️Вознаграждение — это успешность действия агента (некая числовая оценка его действий)
◽️Политика — это стратегия, которую агент использует для достижения целей.
◽️Стоимость — награда, которая ожидается в долгосрочной перспективе.
⁉️ Эти некоторые термины ↑ нам нужно понимать для дальнейшего обучения;
‼️(ЕСЛИ ВЫ УЖЕ НА КРУТОМ УРОВНЕ, Я ПРИКРЕПЛЮ ПАРУ СТАТЕЙ ДЛЯ ЛИЧНОГО ОБУЧЕНИЯ)‼️
🧑💻 "Основное отличие обучения с подкреплением от классического машинного обучения заключается в том, что искусственный интеллект обучается в процессе взаимодействия с окружающей средой, а не на исторических данных"
Ща рассмотрим пример:
👨🏼💻Расскажу вам про обучение с подкреплением — еще один тип машинного обучения, примеры таких моделей, вы, наверняка уже встречали (об этом дальше).
Итак, в этом типе машинного обучения никакие данные не передаются и мы «должны заставить компьютер выполнить задачу»
◽️Суть в том, что у нас есть какая-то окружающая среда, в этой среде агент (это программа или модель, которая принимает решение и потом выполняет действия на основе этих решений, агент взаимодействует со средой и на основе её откликов корректирует своё поведение).
◽️Состояние — это информация о текущем положении агента в среде. В каждый момент времени агент находится в каком-то состоянии.
◽️Также есть действия, которые агент выбирает на основе текущего состояния.
◽️Вознаграждение — это успешность действия агента (некая числовая оценка его действий)
◽️Политика — это стратегия, которую агент использует для достижения целей.
◽️Стоимость — награда, которая ожидается в долгосрочной перспективе.
⁉️ Эти некоторые термины ↑ нам нужно понимать для дальнейшего обучения;
‼️(ЕСЛИ ВЫ УЖЕ НА КРУТОМ УРОВНЕ, Я ПРИКРЕПЛЮ ПАРУ СТАТЕЙ ДЛЯ ЛИЧНОГО ОБУЧЕНИЯ)‼️
🧑💻 "Основное отличие обучения с подкреплением от классического машинного обучения заключается в том, что искусственный интеллект обучается в процессе взаимодействия с окружающей средой, а не на исторических данных"
Ща рассмотрим пример:
1🥰3👨💻1
🧑💻 Полезные статьи:
https://www.baeldung.com/cs/ml-policy-reinforcement-learning — политика в обучении с подкреплением 📈
https://education.yandex.ru/handbook/ml/article/obuchenie-s-podkrepleniem — обучение с подкреплением 💲
https://habr.com/ru/companies/newprolab/articles/343834/ — Введение в обучение с подкреплением: от многорукого бандита до полноценного RL агента ⚙️
https://medium.com/machine-learning-for-humans/reinforcement-learning-6eacf258b265 — Machine Learning for Humans, Part 5: Reinforcement Learning 💻
https://www.baeldung.com/cs/ml-policy-reinforcement-learning — политика в обучении с подкреплением 📈
https://education.yandex.ru/handbook/ml/article/obuchenie-s-podkrepleniem — обучение с подкреплением 💲
https://habr.com/ru/companies/newprolab/articles/343834/ — Введение в обучение с подкреплением: от многорукого бандита до полноценного RL агента ⚙️
https://medium.com/machine-learning-for-humans/reinforcement-learning-6eacf258b265 — Machine Learning for Humans, Part 5: Reinforcement Learning 💻
👍2🥰1🤯1
🥶 Телега ограничивает количество ссылок и текста, поэтому:
Навигация по Машинному обучению (2)
🔗 Обучение с подкреплением (Рассматриваем пример ниже)
🔗 Функция вознаграждения
🔗 Рассматриваем две политики
🔗 Оценка политик
🔗 Полезные статьи для личного изучения
__________________________________
🟰 Разбор упражнения в конце главы 🟰 Разъяснения и ответы
__________________________________
⚙️ Линейная регрессия (Начало конца💀)
⚙️ Начинаем разбирать пример
⚙️ Рассматриваем пример из книги
⚙️ Сдвиг, наклон и другие прелести
⚙️ Говорим про наклон
⚙️ Алгоритм формулы линейной регрессии (просто как работает формула)
__________________________________
🟰Н А В И Г А Ц И Я🟰
‼️ ПРЕДЫДУЩИЙ ПОСТ О МАШИННОМ ОБУЧЕНИИ
Навигация по Машинному обучению (2)
🔗 Обучение с подкреплением (Рассматриваем пример ниже)
🔗 Функция вознаграждения
🔗 Рассматриваем две политики
🔗 Оценка политик
🔗 Полезные статьи для личного изучения
__________________________________
🟰 Разбор упражнения в конце главы 🟰 Разъяснения и ответы
__________________________________
⚙️ Линейная регрессия (Начало конца💀)
⚙️ Начинаем разбирать пример
⚙️ Рассматриваем пример из книги
⚙️ Сдвиг, наклон и другие прелести
⚙️ Говорим про наклон
⚙️ Алгоритм формулы линейной регрессии (просто как работает формула)
__________________________________
🟰Н А В И Г А Ц И Я🟰
‼️ ПРЕДЫДУЩИЙ ПОСТ О МАШИННОМ ОБУЧЕНИИ
👍2🤯1
➗Навигация по алгоритмам: Алгоритм сортировки выбором:
📈 Рассматриваем алгоритм сортировки выбором и код
⚙️ Продолжаем рассматривать код к алгоритму
__________________________________
🟰Н А В И Г А Ц И Я🟰
🟰 В Е Р Н У Т Ь С Я К А Л Г О Р И Т М А М🟰
📈 Рассматриваем алгоритм сортировки выбором и код
⚙️ Продолжаем рассматривать код к алгоритму
__________________________________
🟰Н А В И Г А Ц И Я🟰
🟰 В Е Р Н У Т Ь С Я К А Л Г О Р И Т М А М🟰
👍2🤡1👀1
🔗 Задание Сумма делителей (7.3)
🔗 Мы прекрасно знаем что нужно писать для начала:
Дальше цикл for для перебора всех чисел (включительно):
⭕️ Теперь, самое сложное, вспомнить, че такое этот ваш делитель:
Делитель — число, на которое делят делимое. Делимое у нас 10, нам нужно найти сумму делителей.
📈 Если остаток от деления нашего числа на предполагаемый делитель i будет равен 0, значит делитель мы нашли верный и мы его добавляем к нашему счетчику суммы:
🔗 Весь код:
🔗 Мы прекрасно знаем что нужно писать для начала:
n = int(input())
t = 0
Дальше цикл for для перебора всех чисел (включительно):
for i in range(1, n + 1):
⭕️ Теперь, самое сложное, вспомнить, че такое этот ваш делитель:
Делитель — число, на которое делят делимое. Делимое у нас 10, нам нужно найти сумму делителей.
📈 Если остаток от деления нашего числа на предполагаемый делитель i будет равен 0, значит делитель мы нашли верный и мы его добавляем к нашему счетчику суммы:
if n % i == 0:
t += i
print(t)
🔗 Весь код:
n = int(input())
t = 0
for i in range(1, n + 1):
if n % i == 0:
t += i
print(t)
❤🔥2🥰1🤯1
Че сегодня хотите?
Anonymous Poll
10%
Машинка
0%
Алгоритмы
10%
Разбор темы на Python
30%
Егэ разбор задания
40%
Динаху
10%
Разбор кода на C
Гайс, сегодня переносится на завтра, сделаю целых два поста, т.к я устал жестка, поэтому с первыми петухами начинаем прогать
👍4
🔗 Попробуем разобрать самый обычный пример кода:
0️⃣ Первая строка кода — это создание множества:
⁉️ Вопрос зач? Да затем, что "множества — это неупорядоченные коллекции уникальных элементов" — нам это говорит о том, что, даже если для разных чисел N получится одно и то же значение R, оно будет добавлено в множество только один раз. То есть, множество 🟰
1️⃣ Итак, теперь цикл для перебора всех чисел N от 1 до 149 (включительно). Для каждого N выполняется алгоритм преобразования в двоичное число и вычисления R (это мы еще разберем):
2️⃣ Нам нужно преобразовать число n в двоичную строку:
⭕️ Bin — это встроенная функция в Python, которая преобразует целое число в двоичную строку.
⭕️ [2:] — этот срез говорит нам о том, что выводится будут все элементы, начиная со 2, позже поймете почему.
🟰 Вот вам ПРИМЕР:
🟰 Префикс 0b в Python используется для обозначения двоичного числа (основание 2), но нам этот префикс не нужен, поэтому используем срез:
3️⃣ "Если число N делится на 3, то к этой записи дописываются три последние двоичные цифры" — так и запишем:
🟰 С первой строкой все понятно, рассмотрим вторую:
‼️ Прежде всего, функция len() возвращает длину строки s, а затем, прибавляет к строке s последние 3 символа этой строки. То есть, если строка имеет длину строки 6, последние 3 символа начинаются с индекса [6 - 3] — эта запись эквивалентна просто индексу [3].
⁉️ Возможно, у вас появился вопрос, почему нельзя просто написать s[3:]? (Кстати, в этом случае сработает). Дак вот, если длина строки меньше 3, то 🟰
4️⃣ "Если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа" — так и пишем)
⭕️ С первой строкой все снова понятно, на второй строке, остаток от деления на 3 умножаем на 3. Третья строка: число k преобразуется в двоичную строку с помощью bin(k) (Это уже разбирали в начале). Строка s1, которая является двоичной записью k, добавляется к исходной строке s (двойничной записи числа N).
🧑💻 Гайс, возможно все это еще очень не понятно, особенно, если вы только начали это изучать, но порешаем так парочку примеров и все поймем)
5️⃣ Создаем переменную r. После всего, что мы проделали над строкой s, она является двоичной записью нового числа R. Поэтому, переводим строку обратно в десятичное число r:
6️⃣ "Укажите минимальное число r, большее 151, которое может быть получено с помощью полученного алгоритма. В ответе запишите это число в десятичной системе счисления"
7️⃣ И, пишем функцию 🟰print🟰 для нахождения минимального числа из всех добалвенных в наше множество:
8️⃣ Сам код:
▫️Ща поймете, возьмем небольшое число, пусть будет n = 5.
▫️🟰
▫️Затем, первое условие
▫️Следующее условие:
▫️
▫️🟰
▫️
0️⃣ Первая строка кода — это создание множества:
a = set()
⁉️ Вопрос зач? Да затем, что "множества — это неупорядоченные коллекции уникальных элементов" — нам это говорит о том, что, даже если для разных чисел N получится одно и то же значение R, оно будет добавлено в множество только один раз. То есть, множество 🟰
set()🟰 будет отсеивать дублирующиеся значения R. 1️⃣ Итак, теперь цикл для перебора всех чисел N от 1 до 149 (включительно). Для каждого N выполняется алгоритм преобразования в двоичное число и вычисления R (это мы еще разберем):
for n in range(1, 150):
2️⃣ Нам нужно преобразовать число n в двоичную строку:
s = bin(n)[2:]
⭕️ Bin — это встроенная функция в Python, которая преобразует целое число в двоичную строку.
⭕️ [2:] — этот срез говорит нам о том, что выводится будут все элементы, начиная со 2, позже поймете почему.
🟰 Вот вам ПРИМЕР:
x = 17
y = bin(x)
print(y) #0b10001
🟰 Префикс 0b в Python используется для обозначения двоичного числа (основание 2), но нам этот префикс не нужен, поэтому используем срез:
x = 17
y = bin(x)[2:]
print(y) #10001
3️⃣ "Если число N делится на 3, то к этой записи дописываются три последние двоичные цифры" — так и запишем:
if n % 3 == 0:
s += s[len(s) - 3:]
🟰 С первой строкой все понятно, рассмотрим вторую:
s += s[len(s) - 3:]
‼️ Прежде всего, функция len() возвращает длину строки s, а затем, прибавляет к строке s последние 3 символа этой строки. То есть, если строка имеет длину строки 6, последние 3 символа начинаются с индекса [6 - 3] — эта запись эквивалентна просто индексу [3].
⁉️ Возможно, у вас появился вопрос, почему нельзя просто написать s[3:]? (Кстати, в этом случае сработает). Дак вот, если длина строки меньше 3, то 🟰
s[3:]🟰 вернёт пустую строку, так как индекс 3 выходит за пределы длины строки. (Но это ладно, просто для понимания)4️⃣ "Если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа" — так и пишем)
if n % 3 != 0:
k = (n % 3) * 3
s1 = bin(k)[2:]
s += s1
⭕️ С первой строкой все снова понятно, на второй строке, остаток от деления на 3 умножаем на 3. Третья строка: число k преобразуется в двоичную строку с помощью bin(k) (Это уже разбирали в начале). Строка s1, которая является двоичной записью k, добавляется к исходной строке s (двойничной записи числа N).
🧑💻 Гайс, возможно все это еще очень не понятно, особенно, если вы только начали это изучать, но порешаем так парочку примеров и все поймем)
5️⃣ Создаем переменную r. После всего, что мы проделали над строкой s, она является двоичной записью нового числа R. Поэтому, переводим строку обратно в десятичное число r:
r = int(s, 2)
6️⃣ "Укажите минимальное число r, большее 151, которое может быть получено с помощью полученного алгоритма. В ответе запишите это число в десятичной системе счисления"
if r > 151:
a.add(r)
7️⃣ И, пишем функцию 🟰print🟰 для нахождения минимального числа из всех добалвенных в наше множество:
print(min(a))
8️⃣ Сам код:
a = set()
for n in range(1, 150):
s = bin(n)[2:]
if n % 3 == 0:
s += s[len(s) - 3:]
if n % 3 != 0:
k = (n % 3) * 3
s1 = bin(k)[2:]
s += s1
r = int(s, 2)
if r > 151:
a.add(r)
print(min(a))
▫️Ща поймете, возьмем небольшое число, пусть будет n = 5.
▫️🟰
s = bin(5)[2:]🟰 — s становится равной '101' (Желательно смотреть за кодом)▫️Затем, первое условие
🟰if 5 % 3 == 0:🟰 (Условие не выполняется)▫️Следующее условие:
if 5 % 3 != 0:
k = (5 % 3) * 3 # Условие выполнится, k = 6
▫️
🟰s1 = bin(6)[2:]🟰 — Строка s1 теперь преобразуется в двоичную строку и становится равной "110"▫️🟰
s += s1🟰 — Добавляем "101" к "110" и получаем "101110"▫️
r = int(s, 2) → r = 46 (Преобразуем двоичную строку "101110" обратно в десятичное число)
▫️И, наконец, 🟰if r > 151:🟰→ проверка последнего условия (Условие не выполнится, значит в наше множество не добавляется)❤2❤🔥2🥰1
Гайс, честно, это задание похлеще многих заданий с перчиком в курсе, я бы даже ему дал 🌶🌶🌶. Если вы мало что поняли с разбора решения, просьба самим написать код и построчно следить за моим разбором, чтобы наверняка закрепить знания. Мы обязательно разберем еще аналогичные задания 5 типа, поэтому все обязательно поймете...
❤🔥2❤1🥰1