Semolina Code (Python / TypeScript)
7.45K subscribers
9 photos
4 files
100 links
По вопросам: @ahillary
Download Telegram
Пока небольшой гайд по ускорению любого видео через браузер:
1) заходим в инструменты разработчика: ПКМ по страничке браузера -> "посмотреть код"
2) переходим на вкладку "Console"
3) пишем туда код:
document.querySelector('video').playbackRate = 2.0

(вместо 2.0 можно поставить любое число. 2.0 означает "ускорить видео в 2 раза")

Semolina code | Chat | YouTube
17👍1
1 урок:
Ссылка на видео
Методичка в notion: Основы python
Ссылка на презентацию
Ссылка на код с урока

Альтернативный вариант, где посмотреть теорию (на самом деле первая ссылка из браузера)

К следующему уроку нужно скачать алекса дева vs code и настроить его под python (руссификатор устанавливать необязательно)

Сразу еще кидаю учебник-справочник по python
По нему нет смысла обучаться без опыта
Но темы, которые мы прошли, в нем можно посмотреть и закрепить (учебник переведен на множество языков. Я кидаю русскую версию)

Видео с решением практики (смотреть только после того, как попробовали решить самостоятельно)

Практика:
1 уровень:
1) Пользователь вводит число a и число b. Возвести а в степень b
2) Пользователь вводит число от 1 до 7. Вывести соответствующий день недели
3) Пользователь вводит 2 числа. Вывести наибольшее из них
4) Пользователь вводит свой депозит и хороший курс доллара. Вывести в консоль депо в рублях и заплакать

2 уровень:
1) Пользователь вводит число. Если оно четное, вывести "четное". Если оно нечетное, вывести "нечетное"
2) Пользователь вводит 3 числа. Вывести наименьшее из них
3) Из нарнийского чата Аня узнала, что рекомендуется спать хотя бы A часов в сутки, но пересыпать тоже вредно и не стоит спать более B часов. Сейчас Аня спит H часов в сутки. Если режим сна Ани удовлетворяет рекомендациям Сергея, выведите “Это нормально”. Если Аня спит менее A часов, выведите “Недосып”, если же более B часов, то выведите “Пересып”. Получаемое число A всегда меньше либо равно B (то есть это проверять не надо).

3 уровень:
1) Написать простой калькулятор, который считывает с пользовательского ввода три строки: первое число, второе число и операцию, после чего применяет операцию к введенным числам (“первое число” “операция” “второе число”) и выводит результат на экран.
Поддерживаемые операции: +, -, /, *, mod, pow, div, где:
mod - это взятие остатка от деления,
pow - возведение в степень,
div - целочисленное деление.
2) даны 2 числа a и b. Определить, делится ли a на b нацело. Делится ли b на a?
3) дано трёхзначное число. Определить, есть ли среди его цифр одинаковые

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍4213
2 урок:
Ссылка на видео
Методичка в notion: Основы python
Методичка в notion: Cписки, цикл for, цикл while
Ссылка на презентацию
Ссылка на Код с урока

Визуализатор python с урока

Видео с решением практики (смотреть только после того, как попробовали решить самостоятельно)

уровень 1:
1) Напишите программу, которая проверяет попадает ли введенное пользователем число в диапазон от 1 до 100 или от 200 до 300 включительно.
2) Температура воды в кастрюле 7 градусов. Кастрюлю поставили на огонь. Температура увеличивается каждые 2с на 1 градус. Определить через сколько вода закипит (температура будет 100 градусов)
3) Вывести на экран 5 строк из трех нулей (каждая строка должна быть пронумерована)
4) Вывести прямоугольный треугольник из символа "*" (высота указывается с клавиатуры)

уровень 2:
1) Имеется коробка со сторонами A x B x C. Определить, войдет ли она в дверь размером M x K
2) Вывести равнобедренный треугольник из символа "*" (высота указывается с клавиатуры)
3) Дано число N и последовательность квадратов чисел (1, 4, 9, 16, 25, …). Вывести числа, которые меньше N

уровень 3:
1) В кафе продают по 3 шарика мороженного и по 5. Можно ли купить ровно k шариков мороженного
2) Клиент оформил вклад на m тысяч рублей в банке под k% годовых. Через сколько лет сумма вклада превысит s тысяч рублей, если за это время клиент не будет брать деньги со счета.
3) Дано число N. Посчитать сумму цифр

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍156👏3
Просто мозг не привык разбивать задачи на мелкие части и придумывать каждый шаг
Вот для вас всех алгоритм как решать задачи с циклом на примере задачи с равнобедренным треугольником.

1) забейте на цикл и забудьте, что он существует. Решите задачу с помощью принтов:
print(“ *”)
print(“ ***”)
print(“*****”)
Результат:
*
***
*
2) анализируем закономерности в print.
Пробелы: сначала 2, потом 1, потом 0 (на каждом шаге -1)
Звёздочки: сначала 1, потом 3, потом 5 (на каждом шаге + 2)
3) делаем принты одинаковые (с помощью переменной)
spaces = 2
stars = 1
print(“ ” * spaces + stars * “*”)
spaces -= 1
stars += 2
print(“ ” * spaces + stars * “*”)
spaces -= 1
stars += 2
print(“ ” * spaces + stars * “*”)
spaces -= 1
stars += 2
Получаем 3 строчки которые повторяются 3 раза
4) пытаемся понять как это связать с данными, которые ввёл пользователь (в нашем случае высота = h = 3)
spaces в примере изначально была = 2
Это по сути h - 1
stars в любом случае вначале всегда должна равняться 1 (так как это вершина)
5) сколько итераций должен сделать цикл? Столько же сколько и высота:
i = 0
while i < h:

i += 1
6) добавим в цикл наш код:
i = 0
while i < h:
print(“ ” * spaces + stars * “*”)
spaces -= 1
stars += 2
i += 1
7) добавим переменные, которые зависят от пользователя:
h = int(input())
spaces = h - 1
start = 1
i = 0
while i < h:
print(“ ” * spaces + stars * “*”)
spaces -= 1
stars += 2
i += 1
8) уже всё работает - пытаемся оптимизировать: можно убрать переменную i и использовать как счётчик переменную spaces (но в условии нужно будет писать spaces >= 0 так как цикл должен закончиться, когда закончатся пробелы)
Получаем неплохой код:
h = int(input())
spaces = h - 1
stars = 1
while spaces >= 0:
print(“ ” * spaces + stars * “*”)
spaces -= 1
stars += 2

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
🔥133👍1
3 урок:
Ссылка на видео
Методичка в notion: Cписки, цикл for, цикл while
Ссылка на презентацию
Ссылка на код с урока

Если у вас что-то не получается - это нормально
Мы двигаемся в супер сумасшедшем темпе и так обычно никто не работает. За 3 урока (1.5 недели) мы разобрали темы, которые обычные школы программирования проходят за 2.5-3 месяца
Если вы понимаете то, что мы прошли хотя бы на 70% - вы уже нереальные красавцы

По поводу практики: достаточно решать 3-5 задач из разных блоков, чтобы закреплять материал и считать домашнее задание сделанным, а тему понятой)

Видео с решением практики (смотреть только после того, как попробовали решить самостоятельно)

Задачи на работу со списком через цикл:
1) есть список из 10 элементов. найти сумму элементов этого списка
2) есть список из 10 элементов. Посчитать сумму четных цифр в списке
3*) есть список из 10 элементов. найти наибольшее и наименьшее число в списке (самая простая задача с реального собеседования)
4*) задача 3, но нужно найти индекс минимального и максимального элемента в списке

Задачи на методы списка:
1) Задачу начать решать с пустого списка:
lst = []
Папа написал Саше список продуктов (молоко, огурцы, пиво, рыбка) и бабушка тоже попросила купить некоторые продукты (чай, сахар, сухарики).
Мама увидела список и сказала вычеркнуть пиво и рыбку
Помоги Саше сформировать единый список покупок и посчитать сколько пунктов содержит общий список покупок
2) Есть список. пользователь вводит число. Нужно определить, есть ли это число в списке
3) Есть список и число, которое ввел пользователь
посчитать сколько раз это число встречается в списке

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍75
4 урок:
Ссылка на видео
Методичка в notion: Функции
Ссылка на презентацию
Ссылка на код с урока

Мы скорее всего сделалаем перерыв на недельку, чтобы все кто хочет, смогли догнать тех, кто ушел вперед
Это сообщение будет редактироваться и я сюда добавлю ресурсы где можно дополнительно почитать по нашим темам

Видео 1 в конце видео решается задача 6.6 и там в решение ошибка: если попытаться удалить последний элемент, вылетим с ошибкой "index out of range".
На ошибку указал @facerx и вот правильное решение:
def foo(lst, n):
tmp_lst = []
i = 0
while i < len(lst):
if i == n:
i += 1
tmp_lst.append(lst[i])
if i == n - 1:
i += 1
i += 1
print(tmp_lst)


Видео 2
С решением практики (смотреть только после того, как попробовали решить самостоятельно)

Задачи на работу с функциями:
1) Написать функцию, которая будет искать и выводить на экран минимальное число, большее 300 и кратное 19.
2) Написать функцию, которая будет обменивать местами первую и последнюю цифру числа N (1234 → 4231).
3) Написать функцию, которая будет определять, делится ли число N на: 2, 3, 4, 5, ... (без использования оператора % )
4) Написать функцию, которая будет вычислять и выводить на экран значение выражения
N^M без использования оператора возведения в степень (**).
5) С клавиатуры вводится пять чисел. Для каждого из них вывести,
является ли оно степенью числа 3. Вынести определение степени в функцию.
6) Реализовать набор функций для работы со списком:
• Ввод с клавиатуры/инициализация случайными числами (с параметрами).
• Вывод списка на экран (в одну строчку).
• Подсчет максимума и минимума (с индексами).
• Подсчет количества элементов, равных (больших/меньших) N.
• Добавление элемента К [в конец массива/на N-ю позицию].
• Удаление из списка [последнего/Nго элемента].
• Сортировка списка по (возрастанию/убыванию). Повторяющиеся — убирать.
7) Найти третий максимум в списке.
8) Сдвинуть все элементы массива на два вправо. Оставшиеся элементы — поставить слева в том же порядке.
9) Вставить K после максимального элемента.

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍75
5 урок:
Ссылка на видео
Методичка в notion: Строки и методы строк
Ссылка на презентацию

К следующему уроку обязательно почитайте документацию по методам строк (попробуйте использовать методы, которые отмечены галочкой в презентации)

Видео с решением практики

Практика:
1 уровень:
1) Паша очень любит кататься на общественном транспорте,
а получая билет, сразу проверяет, счастливый ли ему попался.
Билет считается счастливым, если сумма первых трех цифр совпадает с
суммой последних трех цифр номера билета.
Программа должна выводить “Счастливый” или “Обычный”. (Решить с помощью индексов строк, то есть без математики 🥳)
2) Дана последовательность символов. Проверить, является ли она палиндромом (слово или текст, одинаково читающееся в обоих направлениях)
3) Написать функцию проверки email (представьте, что для своего сайта эту функцию пишете. Сделать проверки, которые считаете нужными, а я буду пробовать сломать)
4) Определить количество слов в строке.
Вводится строка, состоящая из слов, разделенных пробелами.
Требуется посчитать количество слов в ней.

2 уровень:
1) Определить сложность пароля (сделать функцию как на обычных сайтах. То есть проверять большие буквы, символы, цифры И так далее. Подсказка: ascii)
2) Необходимо написать программу, которая сможет посчитать повторяющиеся символы и вывести сокращенную строку, пример:
Вход: s = 'aaaabbcaa'
Выход: 'a4b2c1a2'
3) На основании предоставленного отрывка текста определить 3 наиболее часто встречаемых символа в нем.
Пробелы нужно игнорировать (не учитывать при подсчете).
Для выведения результатов вычислений требуется написать функцию top3(st).
Итог работы функции представить в виде строки: «символ – количество раз, символ – количество раз…».
4) Дмитрий считает, что когда текст пишут в скобках (как вот тут, например), его читать не нужно.
Вот и надумал он существенно укоротить время чтения, написав функцию, которая будет удалять все, что расположено внутри скобок.

УРОВЕНЬ ПСиИииХ :
1) Взять файл из закрепа (там html код таблицы с CoinGecko ~5.5к строк)
2) засунуть этот код в переменную (просто скопировать и засунуть в переменную с помощью тройных кавычек)
3) Вывести все названия криптовалют, которые есть в этом коде (по сути первая страница coingecko - топ 100)
P.S. - не пытайтесь читать код coingecko. Откройте консоль разработчика и найдите закономерности
Подсказка: возле каждого названия криптовалюты есть классы "py-0 coin-name cg-sticky-col cg-sticky-third-col px-0" ориентируйтесь на них, когда будете парсить

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
❤‍🔥43👍3
coingecko.txt
1.1 MB
Файл для практики урока 5
🤯3❤‍🔥2
6 урок:
Ссылка на видео
Методичка в notion: Словари и кортежи
Ссылка на презентацию

В этот раз я попробовал записать видео без людей. Интересно какой формат вам больше подходит. Жду фидбека)

Видео с решением практики

Практика (если будет мало - напишите и я докину задачи):
1 уровень:
1) Есть 2 словаря. Объединить их без помощи функции update

2) Есть словарь с числовыми значениями. Посчитать среднюю по значениям

3) Даны два списка одинаковой длины. Необходимо создать из них словарь таким образом, чтобы элементы первого списка были ключами, а элементы второго — соответственно значениями нашего словаря.

4) Напишите функцию update_dictionary(d, key, value),
которая принимает на вход словарь d и два числа: key и value.
Если ключ key есть в словаре d, то добавьте значение value в список,
который хранится по этому ключу.
Если ключа key нет в словаре, то нужно добавить значение в список по ключу 2*key.
Если и ключа 2*key нет, то нужно добавить ключ 2*key в словарь
и сопоставить ему список из переданного элемента [value].

5) Когда Антон прочитал «Войну и мир», ему стало интересно,
сколько слов и в каком количестве используется в этой книге.
Помогите Антону написать упрощённую версию такой программы,
которая сможет подсчитать слова, разделённые пробелом и вывести получившуюся статистику.
Программа должна считывать одну строку со стандартного ввода и
выводить для каждого уникального слова в этой строке число его повторений (без учёта регистра)
в формате "слово количество" (см. пример вывода).
Порядок вывода слов может быть произвольным, каждое уникальное слово​ должно выводиться только один раз

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍10🤓3
7 урок:
Ссылка на видео
Методичка в notion: Файлы, JSON, CSV
Ссылка на презентацию

В презентации на последнем слайде есть дополнительная информация, которую нужно изучить для углубления в тему

Видео с решением практики

Практика:
Файл log_100.json:
1) чему равен общий вклад топ-3 всех IP по количеству посещений? Указать процентом
2) сколько в файле уникальных IP, с которых на сайт заходили только 1 раз

Файл log_cereals.csv:
3) наименьшая стоимость пачки манки
4) средняя цена на крупу за весь период наблюдений

Файл log_full.csv:
5) найти максимально часто встречающийся IP
6) посчитать в процентах вклад этого IP адреса в общее кол-во запросов
7) найти последнюю запись в логах с этим IP и выяснить какой user-agent был у этой записи
получить словарь:

suspicious_agent = {
"ip": '...', # самый частовстречаемый ip в логах
'fraction': 70.205, # процент запросов с таким ip от общего кол-ва запросов
'count': 29427, # число запросов с таким IP
'last': { # вложенный словарь с 2-мя полями
'agent': '...', # последний user-agent для этого ip
'timestamp': '...', # последний timestap для этого ip
}
}

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍95
8 урок:
Ссылка на видео
Методичка в notion: Парсинг
Ссылка на презентацию

Это крайний урок этого мини-курса по python
Спасибо всем, кто смотрел, изучал, пресылал домашки итд
Я видел прогресс в живую и это очень круто
Да, программирование оказалось не таким простым, если пытаться за 1 месяц выучить материал, который обычно растягивается на 8 месяцев
Если вы разобрались хотя бы на 60% - вы красавцы

Этот урок получился самым прикладным и насыщенным: я в нём разобрал основы HTML, CSS, затронул JS, показал как снимать блокировку с некоторых платных сайтов, разобрал GET, POST запросы, разобрал несколько библиотек python и написал 2 парсинга . Надеюсь, вам понравится
Возможно не всё будет понятно с 1 раза, поэтому советую конспектировать урок и практиковаться прямо во время урока (повторять мои действия)

В этой группе, возможно, будут какие-то уроки бонусом (типа разбора библиотеки selenium для автоматизации web процессов, работа с прокси, капчами итп). Но сейчас всё-таки я делаю основной упор на создание своей школы программирования, где будет похожий формат, но изучать темы будем глубже, группы будут по 5-6 человек и будем двигаться в комфортном темпе, чтобы было 100% понимание (и всё это за символическую сумму)
Скоро будет готов сайт и там можно будет ознакомиться с самими курсами и программами

Практика:
1) Погуглить дополнительный материал по уроку

2) С сайта https://www.coingecko.com/ru спарсить для каждой строчки "монета", "Цена", "1ч", "24ч", "7д", "Объем торгов за 24 часа", "рыночная кап-ция"
Эту информацию поместить в csv файл по соответствующим столбцам

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
❤‍🔥83👍1🤓1
Уроки с теорией практикой и разбором практики:
Урок 1 - типы данных, ветвления.
Урок 2 - объединение условий, цикл while.
Урок 2.1 - Как понять цикл while (на примере)
Урок 3 - цикл for + списки.
Урок 4 - функции.
Урок 5 - строки, методы строк, файл для практики.
Урок 6 - словари и кортежи.
Урок 7 - файлы, JSON, CSV, файлы для практики.
Урок 8 - парсинг.
Урок 9 - selenium
Урок 10 - ООП
Урок 11 - web3
Урок 12 - EIP-1559
Урок 13 - асинхронность
Урок 14 - Docker
Урок 15 - Асинхронный конструктор и деструктор (aenter, aexit)
Урок 16 - Playwright
Урок 17 - Starknet
Урок 17 - практика и пулы ликвидности

Полезные ресурсы:
- Статья "
How to Code или как выносить проекты на 1000 аккаунтов" feat cryppi
- Список расписанных вопросов по python и back end
- Как зашифровать (обфусцировать) код, чтобы заказчик не кинул

Бесплатные софты:
- Starknet
- Aptos graffio (DEPRECATED)
- Aptos enable nft
- Aptos mint domain names
- Aptos проверка NFT от graffio и OAT

Платные софты:
- Starknet + ZkSync

Лайфхаки:
- Ускорение любого видео в браузере
- Инструкция: "как написать любой http запрос за 3 секунды на любом языке программирования"

Other:
- Бусты в канал

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
58👍4👏3👎1👾1
9 урок:
Ссылка на видео
Ссылка на презентацию
Код с урока
Список опций chromium

Это урок по selenium, который позволит вам автоматизировать практически любой процесс в браузере (начиная с минимального парсинга и заканчивая тестнетами в крипте итп)
В следующем уроке рассмотрим автоматическое прохождение капчи

Практика:
Подключить к chromedriver расширение MetaMask
Загрузить любой кошелек в метамаск
Добавить в расширение метамаск любую сеть через chainlist

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍175🔥1
10 урок (ООП):
Ссылка на видео
Методичка в notion: ООП
Ссылка на презентацию

В этом уроке мы рассмотрели одну из самых важных тем в python и в программировании в целом - ООП

Так же в этом уроке вы увидите как SBF жестко залудил и потерял последние 100к$, а CZ поднял денег на медвежке

Материал специально старался подготовить так, чтобы не перегрузить лишней теорией
После урока вы сможете комфортно чувствовать себя в ООП, понимать чужой код, писать свой код используя ООП и закроете 90% практических задач с ООП. Остальные 10% вы уже загуглите с полным пониманием темы
Почти весь урок состоит из практических примеров

Практику придумать сложно так как интересные проекты с ООП обычно достаточно большие
Из практики могу предложить вузовскую скучную практику по типу "создать свой класс матрица" или создать свой класс "вектор"
Но если хотите, то вот задачка (дополнительную практику можно найти в интернете)

Практика:
Создайте класс Vector с полями x и y, определите для него конструктор, метод str, необходимые арифметические операции:

сложение (__add__)
вычитание (__sub__)
умножение на число справа (__mul__) и слева (__rmul__)
отрицание (унарный минус __neg__)

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍2161
Нашел прикольный сайт
Многие про него знают, но вдруг кто-то не знал
В общем, теперь не обязательно самостоятельно писать сложный запрос через requests
Достаточно просто:
1) Натйи нужный запрос, нажать на него правой кнопкой мыши, выбрать copy -> copy as cURL (скриншот 1)
2) Открыть сайт https://curlconverter.com/
3) вставить запрос и выбрать нужный язык программирования (скрин 2)

Поздравляю!! Теперь вы умеете парсить на 27 языках программирования

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
👍43🔥76😁21🌚1
11 урок (WEB3):
Наконец-то свершилось!!
Видос по библиотеки web3.py
Код из видео

В видео рассмотрено 20% (которые дадут 80% результата) того, что вам нужно знать чтобы самостоятельно писать софты для автоматизации ончейн активностей и профессионально автоматизировать процессы (для себя или на заказ)
Вы познакомитесь с моей структурой кода, которая позволит вам легко масштабироваться, легко искать в коде то, что вам нужно и вести фермы из тысячи аккаунтов и больше

Видео выйдет сегодня днём, а перед этим советую пересмотреть видео по ООП
А так же ознакомиться с методичками Крюгера чтобы понимать как работает блокчейн и что такое транзакция, газ, апрув итд
Вот еще статейка с хабра, которая рассматривается в видео

Видос получился на 2 часа с небольшим так как в нем рассмотрен материал как по самой библиотеки web3.py, так и по тому, как её использую я (какой структурой кода пользуюсь, какие дополнительные функции создаю итд)

P.S. в видосе засветил приватник кошелька, на котором примерно 4$ - можете себя забрать на комиссии в l0

SemolinaCode | Chat | YouTube | Arbuzers | HowToCode | Prop
🔥97👍159😁4