🐍РАЗБОР КОДА НА PYTHON🐍
⚙️ Ну гайс, ваше время настало, наступил день, когда придется понять функции... 💀🌶
🔗 Будет разбор кода, естественно, на Python, где мы научимся понимать функции, а также повторим все предыдущие темы. Сама концепция будет такая же: нам якобы дают задание и мы пишем по нему код. Буду писать построчно, ваша задача — писать параллельно, чтобы хоть как то разобраться.
🖇 Итак, ПОСТ 1 (ЗАДАНИЕ):
⭕️ Вы должны создать систему учета успеваемости школьников или студентов, без разницы, но есть пару моментов, так что программа должны работать следующим образом:
0️⃣ После запуска кода, вводим данные: имя студента → оценки по предметам через пробел → либо продолжаем добавлять студентов, либо пишем 'стоп'
1️⃣ Подсчет среднего балла каждого студента и вывод результатов
2️⃣ Дальше программа должна запросить порог для вывода студентов с баллом выше (к примеру, у трех студентов средний балл — 3, а нам нужны студенты с средний баллом, как минимум, 4 ) → мы вводим этот самый порог 4 → программа выводит имя студента и его средний балл (выше 4).
3️⃣ Также должна быть возможность повторного ввода данных, в противном случае, программа завершается (хотите продолжить? да/нет)
4️⃣ Для каждой из задач мы будем использовать функции
5️⃣ Для поиска студентов с высокими баллами будем применять условия
⚙️ Ну гайс, ваше время настало, наступил день, когда придется понять функции... 💀🌶
🔗 Будет разбор кода, естественно, на Python, где мы научимся понимать функции, а также повторим все предыдущие темы. Сама концепция будет такая же: нам якобы дают задание и мы пишем по нему код. Буду писать построчно, ваша задача — писать параллельно, чтобы хоть как то разобраться.
🖇 Итак, ПОСТ 1 (ЗАДАНИЕ):
⭕️ Вы должны создать систему учета успеваемости школьников или студентов, без разницы, но есть пару моментов, так что программа должны работать следующим образом:
0️⃣ После запуска кода, вводим данные: имя студента → оценки по предметам через пробел → либо продолжаем добавлять студентов, либо пишем 'стоп'
1️⃣ Подсчет среднего балла каждого студента и вывод результатов
2️⃣ Дальше программа должна запросить порог для вывода студентов с баллом выше (к примеру, у трех студентов средний балл — 3, а нам нужны студенты с средний баллом, как минимум, 4 ) → мы вводим этот самый порог 4 → программа выводит имя студента и его средний балл (выше 4).
3️⃣ Также должна быть возможность повторного ввода данных, в противном случае, программа завершается (хотите продолжить? да/нет)
4️⃣ Для каждой из задач мы будем использовать функции
5️⃣ Для поиска студентов с высокими баллами будем применять условия
❤🔥1👍1🥰1🤯1
1️⃣🧑💻Как я уже сказал, мы сегодня начнем с функций, пока что давайте перейдем к самому понятию и примерам, чтобы вы понимали концепцию задания, к которому мы приступим позже...
Снизу представлена совершенно обычная функция:
🟰 def — ключевое слово, обозначает начало функции
🟰 greeting — имя функции, в последней строке мы снова используем его, чтобы вызвать ее
🟰 () — скобки пишем даже если нет никаких аргументов
🟰 print("Привет, мир!") — код внутри нашей функции, который выполнится, когда мы вызываем эту функцию
2️⃣ Теперь, касаемо функции с аргументами:
⭕️ На этот раз, функция принимает аргумент 'имя', и когда мы вызываем эту самую функцию, мы ей передаем имя, которые оно использует — 'Brovscki'
Продолжим вечером, всем удачного и продуктивного дня 🥰
Снизу представлена совершенно обычная функция:
def greeting():
print("Привет, мир!")
greeting()
#Вывод ↓
#Привет, мир!
🟰 def — ключевое слово, обозначает начало функции
🟰 greeting — имя функции, в последней строке мы снова используем его, чтобы вызвать ее
🟰 () — скобки пишем даже если нет никаких аргументов
🟰 print("Привет, мир!") — код внутри нашей функции, который выполнится, когда мы вызываем эту функцию
2️⃣ Теперь, касаемо функции с аргументами:
⭕️ На этот раз, функция принимает аргумент 'имя', и когда мы вызываем эту самую функцию, мы ей передаем имя, которые оно использует — 'Brovscki'
def greeting(имя):
print(f"Привет, {имя}!")
greeting('Brovscki')
Продолжим вечером, всем удачного и продуктивного дня 🥰
4❤🔥2👍1🤯1
🔗 Так, продолжаем разбираться с функциями (совсем скоро мы начнем писать наш большой код)
⚙️ Разберем return:
⭕️ Используется return для возврата результата из функции (по сути он завершает функцию).
🔗 То есть, когда мы взываем функцию
‼️Очень важно: результат сложения 8 передаётся обратно в то место, где функция была вызвана. В этом случае результат сохраняется в переменную
⁉️Почему пишем return и зачем он нужен? ↓
⭕️ Если функция не содержит
⚙️ Разберем return:
⭕️ Используется return для возврата результата из функции (по сути он завершает функцию).
def summ(a, b):
return a + b # Возвращаем результат сложения
result = summ(3, 5) # Вызов функции
print(result) # Результат будет 8
🔗 То есть, когда мы взываем функцию
summ(3, 5) → код складывает 3 и 5 → функция → функция возвращает результат 8 → результат 8 сохраняем результат в переменную ‼️Очень важно: результат сложения 8 передаётся обратно в то место, где функция была вызвана. В этом случае результат сохраняется в переменную
result⁉️Почему пишем return и зачем он нужен? ↓
⭕️ Если функция не содержит
return → она всегда возвращает значение None (Но тут тоже есть исключения: в этом посте мы рассматривали примеры без использования return, так как результат функции не нужен для дальнейших вычислений. Нам всего то нужно вывести сообщение, поэтому возвращать ничего не нужно)3❤🔥1👍1🥰1🤯1
Еще разберем пару примеров и я спать 💤
✅ Кароч, вызвали функцию, в это время создается и возвращается список, результат работы сохранился в место где была вызвана эта самая функция и выводим результат.
🔗 Если бы вопрос в том, чтобы сделать без return, то вот:
❓Так в чем различие❓
⭕️ В первом случае, если мы используем return → функция передаёт результат туда, где и была вызвана. Результат мы этот сохраняем в переменной и дальше можем использовать его в других вычислениях.
⭕️ Если мы return не используем, то просто выводим результат
def make_a_list(a, b): # Объявляем функцию
return [a, b] # Возвращаем список, состоящий из двух чисел
our_list = make_a_list(3, 5) #Вызываем функцию → а после работы функции, результат - список [3,5] — возвращается и сохраняется в переменную our_list
print(our_list)
✅ Кароч, вызвали функцию, в это время создается и возвращается список, результат работы сохранился в место где была вызвана эта самая функция и выводим результат.
🔗 Если бы вопрос в том, чтобы сделать без return, то вот:
def make_a_list(a, b):
print([a, b])
make_a_list(3, 5)
❓Так в чем различие❓
⭕️ В первом случае, если мы используем return → функция передаёт результат туда, где и была вызвана. Результат мы этот сохраняем в переменной и дальше можем использовать его в других вычислениях.
⭕️ Если мы return не используем, то просто выводим результат
3❤🔥2👍1🥰1
Всем доброй ночи гайс 🥰. Решил с вами разобрать несколько примеров для закрепления, если все будет гуд, завтра начнем работать с нашим небольшим проектом ⚙️
🟰Задание 1: Найти максимальное число🟰
🧑💻 Окей, задание понятно, ща решим через функцию:
🔗 Собственно, для начала ее и объявим:
🔗 Дальше условия:
🔗 И вызов функции:
🔗 Сам код:
🟰Задание 1: Найти максимальное число🟰
🧑💻 Окей, задание понятно, ща решим через функцию:
🔗 Собственно, для начала ее и объявим:
def max_num(a, b, c):
🔗 Дальше условия:
if a >= b and a >= c:
return a
elif b >= a and b >= c:
return b
else:
return c
🔗 И вызов функции:
result = max_num(5,7,8)
print(result)
🔗 Сам код:
def max_num(a, b, c):
if a >= b and a >= c:
return a
elif b >= a and b >= c:
return b
else:
return c
result = max_num(5,7,8)
print(result)
2❤🔥2❤1👍1🥰1
🟰Задание 2: Вычисление суммы всех чисел в списке🟰
🔗 Объявляем функцию и пишем счетчик:
🔗 Пишем цикл для перебора всех чисел в списке
🔗 Ну и вызов функции, а перед этим пишем сам список:
🔗 Сам код:
🔗 Объявляем функцию и пишем счетчик:
def summ_num(numbers):
summ = 0
🔗 Пишем цикл для перебора всех чисел в списке
numbersfor num in numbers:
summ += num
return summ #Возвращаем итоговую сумму
🔗 Ну и вызов функции, а перед этим пишем сам список:
listt = [1,2,3,4,5,6]
total_sum = summ_num(listt)
print(total_sum) #21 - Вывод
🔗 Сам код:
def summ_num(numbers):
summ = 0
for num in numbers:
summ += num
return summ
listt = [1,2,3,4,5,6]
total_sum = summ_num(listt)
print(total_sum)
5❤🔥1❤1👍1🥰1
🟰Задание 3: Возвращение нового списка с четными числами🟰
0️⃣ Ну тут все понятно, создаем функцию которая принимает список:
1️⃣ Создаем пустой список (туда будем заносить четные числа)
2️⃣ Теперь цикл и условие:
3️⃣ Возвращаем список четных чисел:
4️⃣ Cоздаём список, вызываем функцию 🟰
5️⃣ Ну и сам код:
0️⃣ Ну тут все понятно, создаем функцию которая принимает список:
def filter_func(list_num):
1️⃣ Создаем пустой список (туда будем заносить четные числа)
even_num = []
2️⃣ Теперь цикл и условие:
for num in list_num: # Проходим по каждому числу в списке
if num % 2 == 0: # Условие четности
even_num.append(num) # Ну и добавление четного числа в наш пустой список
3️⃣ Возвращаем список четных чисел:
return even_num
4️⃣ Cоздаём список, вызываем функцию 🟰
filter_func()🟰 → передаем ей список как аргумент → функция, значит, выполняется и возвращает новый список четных чисел → воот, а уже он сохраняется в переменную 🟰result🟰listt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter_func(listt)
print(result)
5️⃣ Ну и сам код:
def filter_func(list_num):
even_num = []
for num in list_num:
if num % 2 == 0:
even_num.append(num)
return even_num
listt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter_func(listt)
print(result)
5❤🔥1👍1🥰1
👨🏼💻 Гайс, сегодня начинаем разбор нашего запланированного проекта системы учета оценок. Сейчас планировал обновить навигацию за последние 2 недели, так что сегодня все посты вы сможете найти по ссылкам.
❤🔥2👍1🥰1
🔗 Сори че задержался, давайте начнем с первой функции. А начнем мы с функции на ввод данных о студентах и их оценках. Мы, получается, должны ввести имя студента. а затем его оценки. Цикл должен продолжаться, пока мы не введем стоп - слово.
0️⃣ Такс, объявим саму функцию:
1️⃣ Дальше создадим словарь, и да, мы не говорили о них раньше, но сейчас самое время)
🔗 Теперь давайте я вам поясню зачем ваще нужны словари:
‼️ Кароч, словари штука по-своему крутая. Че они из себя представляют? Это, значит, такая структуры данных, которые хранят в себе значение попарно ключ-значение.
🔗 Давайте теперь по нашему примеру:
‼️ Оценки в квадратных скобках это ЗНАЧЕНИЯ. Те имена, что в кавычках — это КЛЮЧИ, кстати, по этим ключам мы можем обращаться и выводить значения, а выглядит это так:
Обращения по ключу:
Добавление новой пары ключ-значение:
Изменение значения по ключу:
Удаление элемента по ключу:
⭕️ Дак вот, мы создали пустой словарь, в который будет добавлять данные по нашей школоте:
2️⃣ Пишем цикл, который будет работать, пока не напишем стоп-слово (Бесконечный цикл)
3️⃣ Заполняем имена студентов:
4️⃣ Дальше условие на само стоп слово (типо если вводите такое слово, то выполняется цикл)
⁉️ Че за lower() вообще? Это метод строк, для преобразования всех символов строки в нижний регистр. Еще есть upper(), но это все не так важно, можно и без них )
Продолжим завтра, всем споки 💤
0️⃣ Такс, объявим саму функцию:
def student_data():
1️⃣ Дальше создадим словарь, и да, мы не говорили о них раньше, но сейчас самое время)
students = {}🔗 Теперь давайте я вам поясню зачем ваще нужны словари:
‼️ Кароч, словари штука по-своему крутая. Че они из себя представляют? Это, значит, такая структуры данных, которые хранят в себе значение попарно ключ-значение.
🔗 Давайте теперь по нашему примеру:
student_grades = {
"Ваня": [5, 4, 4, 5],
"Маша": [3, 4, 5, 5],
"Афанасий": [5, 5, 5, 5]
}‼️ Оценки в квадратных скобках это ЗНАЧЕНИЯ. Те имена, что в кавычках — это КЛЮЧИ, кстати, по этим ключам мы можем обращаться и выводить значения, а выглядит это так:
Обращения по ключу:
print(student_grades["Ваня"]) # Вывод: [5, 4, 4, 5]
Добавление новой пары ключ-значение:
student_grades["Папич"] = [3, 4, 4]
Изменение значения по ключу:
student_grades["Маша"] = [4, 4, 4]
Удаление элемента по ключу:
del student_grades["Афанасий"]
⭕️ Дак вот, мы создали пустой словарь, в который будет добавлять данные по нашей школоте:
students = {} # Второй раз написал, думаю, вы не против)2️⃣ Пишем цикл, который будет работать, пока не напишем стоп-слово (Бесконечный цикл)
while True:
3️⃣ Заполняем имена студентов:
name = input("Введите имя студента, или 'стоп' для завершения ввода): ")4️⃣ Дальше условие на само стоп слово (типо если вводите такое слово, то выполняется цикл)
if name.lower() == 'стоп':
break #Если ввели 'стоп', то завершаем цикл
⁉️ Че за lower() вообще? Это метод строк, для преобразования всех символов строки в нижний регистр. Еще есть upper(), но это все не так важно, можно и без них )
Продолжим завтра, всем споки 💤
10❤🔥1❤1👍1🤯1
🧑💻 Навигация по проекту: Система учета успеваемости студентов
🔗 Введение и техническое задание
_____________________________
🔗 Разбираем функции для понимания
🔗 Продолжение по функциям 1
🔗 Продолжение по функциям 2
🔗 Продолжение по функциям 3
🔗 Продолжение по функциям 4
🔗 Продолжение по функциям 5
__________________________________
🌶 Начинаем кодить (пишем первую функцию)
🟰 Продолжение первой функции
🟰 Дописываем первую функцию и разбираем исключения
__________________________________
🔗 Функция для подсчета среднего балла
____________________________
🔗 Функция для выставления порога оценок
🔗 Дополнение к посту
____________________________
🔗 Функция для вывода студента с лучшими оценками
____________________________
🔗 Пишем главную функцию
🔗 Заканчиваем писать главную функцию
____________________________
🔗✅ ГОТОВЫЙ КОД
🔗 Введение и техническое задание
_____________________________
🔗 Разбираем функции для понимания
🔗 Продолжение по функциям 1
🔗 Продолжение по функциям 2
🔗 Продолжение по функциям 3
🔗 Продолжение по функциям 4
🔗 Продолжение по функциям 5
__________________________________
🌶 Начинаем кодить (пишем первую функцию)
🟰 Продолжение первой функции
🟰 Дописываем первую функцию и разбираем исключения
__________________________________
🔗 Функция для подсчета среднего балла
____________________________
🔗 Функция для выставления порога оценок
🔗 Дополнение к посту
____________________________
🔗 Функция для вывода студента с лучшими оценками
____________________________
🔗 Пишем главную функцию
🔗 Заканчиваем писать главную функцию
____________________________
🔗✅ ГОТОВЫЙ КОД
5❤🔥2🤯1
CodeLab
🔗 Сори че задержался, давайте начнем с первой функции. А начнем мы с функции на ввод данных о студентах и их оценках. Мы, получается, должны ввести имя студента. а затем его оценки. Цикл должен продолжаться, пока мы не введем стоп - слово. 0️⃣ Такс, объявим…
5️⃣ Так, мы закончили на то, что завершаем цикл в случае написания "стоп", а ща с вам расскажу про классную тему исключений в Python, рассмотрим пример:
🔗 Пример, когда возникнет исключение и выполнится код в exept
🔗 Пример, когда исключение не возникает, выполняется обычный код:
Завтра закончим 💤
🔗 Пример, когда возникнет исключение и выполнится код в exept
try: # Операция, которая может вызвать исключения, помещается внутрь try
a = 7 / 0
print(a)
except: # Код который должен быть выполнен при возникновении ошибки, находится внутри except
print('Ошибка! Деление на 0') # Это и будет выводом
🔗 Пример, когда исключение не возникает, выполняется обычный код:
try:
a = 7 / 2
print(a)
except:
print('Ошибка! Деление на 0')
# Вывод: 3.5
Завтра закончим 💤
5❤🔥2👍1👀1
🧑💻🔗 Такс, продолжаем) Я бы на вашем месте повторил исключения, которые мы разобрали вчера вот здесь
🔗 Че тут происходит гайс? Честно, сам не в курсе, но попробуем разобраться🧑💻
🟰 try-except — используем для обработки ошибок (ну вдруг че)
🟰
🟰 Ну переменная для оценок, я думаю, понятно. Ввод оценок осуществляется через input().
🟰 Разбивает строку метод 🟰
🟰 Что делает map()? "Функция map() в Python применяется для того, чтобы применить функцию к каждому элементу итерируемого объекта (например, списка или строки)".
⁉️ Как бы вам так сказать,
⭕️ Чтобы вам было понятнее, 🟰
🔗‼️ 🟰
🔗 Возникает ошибка ValueError, и программа выводит сообщение об ошибке (если мы чушь какую-нибудь ввели).
🔗
🔗 ВЕСЬ КОД:
Кстати, первая функция готова)
try:
grades = list(map(float, input(f"Введите оценки для {name} через пробел: ").split()))
students[name] = grades
except ValueError:
print("ERROR")
🔗 Че тут происходит гайс? Честно, сам не в курсе, но попробуем разобраться🧑💻
🟰 try-except — используем для обработки ошибок (ну вдруг че)
🟰
grades = list(map(float, input(f"Введите оценки для {name} через пробел: ").split())): — А вот это уже интересно🧑💻 ↓↓↓ :🟰 Ну переменная для оценок, я думаю, понятно. Ввод оценок осуществляется через input().
🟰 Разбивает строку метод 🟰
split()🟰🟰 Что делает map()? "Функция map() в Python применяется для того, чтобы применить функцию к каждому элементу итерируемого объекта (например, списка или строки)".
⁉️ Как бы вам так сказать,
🟰map()🟰 в нашем коде преобразовывает каждую строку (у нас это оценки студентиков) в число типа float. Я надеюсь, вам понятно, почему float (оценки могут быть и дробными + точность лучше, даже если введем целые числа). ⭕️ Чтобы вам было понятнее, 🟰
grades = list(map(float, input().split()))🟰→ ну ввели мы '5 2.3 6' (как строку) → метод 🟰split():🟰 — разбил эту строку на отдельные элементы ( получится вот так — ['5', '2.3', '6'] ) → таак, дальше функция 🟰map(float...):🟰 берёт каждую строку из списка ['5', '2.3', '6'] и применяет float → получаем [5.0, 2.3, 6.0]. → А еще у нас есть 🟰list():🟰 —превращает результат map() в список. 🔗‼️ 🟰
students[name] = grades🟰 — мы сохраняем оценки студента в словарь students, где ключом будет имя студента, а значением — список его оценок. В этой строке — name — это ключ (имя студента), grades — это значение (оценка) — кароч гайс, тут можете посмотреть как мы добавляем новую пару ключи значение — тут 🔗 Возникает ошибка ValueError, и программа выводит сообщение об ошибке (если мы чушь какую-нибудь ввели).
🔗
🟰return students🟰 — возвращаем словарь students, содержащий все имена студентов и их оценки.🔗 ВЕСЬ КОД:
def student_data():
students = {}
while True:
name = input("Введите имя студента, или 'стоп' для завершения ввода: ")
if name.lower() == 'стоп':
break
try:
grades = list(map(float, input(f"Введите оценки для {name} через пробел: ").split()))
students[name] = grades
except ValueError:
print("ERROR") #Если вы решите ввести буквы в строку для оценок
return students
student_data()
Кстати, первая функция готова)
13❤🔥2❤1👍1🥰1
🔗 Всем доброе утро гайс, нам нужно разобрать несколько функций и останется main() - функция для основных циклов и условий (но об этом позже).
🟰 Нам нужно для начала подсчитать средний балла школоты. В прошлой функции мы заполняли оценки:
0️⃣ Объявляем функцию для начала:
1️⃣ Теперь вычисляем средний балл:
🟰Давайте теперь поговорим, что происходит в этой строчке:
🔗 Дальше тернарное условие, вы, кстати. можете его дополнительно разобрать на другом примере тут
🔗 Го замутим пример:
🔗 Так, ну мы подаем список [1, 2, 3, 5, 6] → функция вычисляет сумма списка — 17 → затем количество элементов 🟰
🔗 Если список пустой, возвращает 0:
🔗 Ну и сам код для создания дальнейшего кода, то, что выше ↑↑↑ — это просто примеры:
🟰 Нам нужно для начала подсчитать средний балла школоты. В прошлой функции мы заполняли оценки:
0️⃣ Объявляем функцию для начала:
def calculate_average(grades):
1️⃣ Теперь вычисляем средний балл:
return sum(grades) / len(grades) if grades else 0
🟰Давайте теперь поговорим, что происходит в этой строчке:
sum(grades) — вычисляет сумму всех оценок в списке (дальше покажу пример)len(grades) — возвращает количество оценок в списке (для среднего балла делим сумму на количество)🔗 Дальше тернарное условие, вы, кстати. можете его дополнительно разобрать на другом примере тут
if grades else 0 — кароч, если список заполнен числами, возвращает True и выполняется расчет среднего балла. Если же список пуст, условия возвращает False и функция вернет 0.🔗 Го замутим пример:
def calculate_average(grades):
return sum(grades) / len(grades) if grades else 0
sum_grades = calculate_average([1, 2, 3, 5, 6])
print(sum_grades)
🔗 Так, ну мы подаем список [1, 2, 3, 5, 6] → функция вычисляет сумма списка — 17 → затем количество элементов 🟰
len([1, 2, 3, 5, 6])🟰 — 5 → среднее значение будет 3.4 (17/5)🔗 Если список пустой, возвращает 0:
def calculate_average(grades):
return sum(grades) / len(grades) if grades else 0
sum_grades = calculate_average([])
print(sum_grades)
🔗 Ну и сам код для создания дальнейшего кода, то, что выше ↑↑↑ — это просто примеры:
def calculate_average(grades):
return sum(grades) / len(grades) if grades else 0
5❤2❤🔥2👍1🥰1
🔗 Гайс доброй вам ночи, ща быстренькой разберем функцию для порога оценок, то есть, мы ставим определенный порог среднего балла, после чего выводятся те студенты, у кого порог совпадает.
🟰 Итак, помните students? Мы создавали с вами словарь и называли его как раз students, почитать можете тут. Вам важно понимать, что этот словарь будет тут присутствовать.
🔗 Для начала, сама функция:
🔗 Дальше генератор словаря, щас мы о нем также поговорим
⚙️ average_rating — переменная средней оценки или балла
⚙️ name — имя студента
Ну и пример работы функции:
Завтра продолжение поста, всем спокойной ночи 💤
🟰 Итак, помните students? Мы создавали с вами словарь и называли его как раз students, почитать можете тут. Вам важно понимать, что этот словарь будет тут присутствовать.
🔗 Для начала, сама функция:
def get_top_students(students, threshold):
🔗 Дальше генератор словаря, щас мы о нем также поговорим
return {name: average_rating for name, average_rating in students.items() if average_rating > threshold}⚙️ average_rating — переменная средней оценки или балла
⚙️ name — имя студента
Ну и пример работы функции:
def get_top_students(students, threshold):
return {name: average_rating for name, average_rating in students.items() if average_rating > threshold}
students = {
"Brovscki": 4.5,
"Мaria": 3.8,
"Antony": 4.9
}
threshold = 4.0
top_students = get_top_students(students, threshold)
print(top_students)
Завтра продолжение поста, всем спокойной ночи 💤
7❤🔥2❤2🤯1👨💻1