CodeLab
145 subscribers
538 photos
20 videos
159 links
Говорим просто о сложном

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
👨‍💻
🤡3❤‍🔥1👍1
👨🏼‍💻 Гайс, сегодня начинаем разбор нашего запланированного проекта системы учета оценок. Сейчас планировал обновить навигацию за последние 2 недели, так что сегодня все посты вы сможете найти по ссылкам.
❤‍🔥2👍1🥰1
🔗 Сори че задержался, давайте начнем с первой функции. А начнем мы с функции на ввод данных о студентах и их оценках. Мы, получается, должны ввести имя студента. а затем его оценки. Цикл должен продолжаться, пока мы не введем стоп - слово.

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❤‍🔥11👍1🤯1
Гайс, навигация обновлена, конечно, еще есть что доработать, но всему свое время. Все посты находятся здесь 🫶
❤‍🔥21👍1🥰1
CodeLab
🔗 Сори че задержался, давайте начнем с первой функции. А начнем мы с функции на ввод данных о студентах и их оценках. Мы, получается, должны ввести имя студента. а затем его оценки. Цикл должен продолжаться, пока мы не введем стоп - слово. 0️⃣ Такс, объявим…
5️⃣ Так, мы закончили на то, что завершаем цикл в случае написания "стоп", а ща с вам расскажу про классную тему исключений в Python, рассмотрим пример:

🔗 Пример, когда возникнет исключение и выполнится код в 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:

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❤‍🔥21👍1🥰1
Гайс, с утра вам напишу еще о нескольких функциях, держите мем
❤‍🔥2👍1🥰1👨‍💻1👀1
🔗 Всем доброе утро гайс, нам нужно разобрать несколько функций и останется main() - функция для основных циклов и условий (но об этом позже).

🟰 Нам нужно для начала подсчитать средний балла школоты. В прошлой функции мы заполняли оценки:

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
52❤‍🔥2👍1🥰1
🔗 Гайс доброй вам ночи, ща быстренькой разберем функцию для порога оценок, то есть, мы ставим определенный порог среднего балла, после чего выводятся те студенты, у кого порог совпадает.

🟰 Итак, помните 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❤‍🔥22🤯1👨‍💻1
Ставьте клоунов
🤡8👍2❤‍🔥1
CodeLab
🔗 Гайс доброй вам ночи, ща быстренькой разберем функцию для порога оценок, то есть, мы ставим определенный порог среднего балла, после чего выводятся те студенты, у кого порог совпадает. 🟰 Итак, помните students? Мы создавали с вами словарь и называли его…
🔗 Итак, хотел бы дополнить вчерашний пост, а именно эту строчку:

return {name: average_rating for name, average_rating in students.items() if average_rating > threshold}


Давайте разберем че тут происходит вообще:

🟰 Если в целом, то мы создаем новый словарь на основе существующего (у нас это students).

🖇 И еще один момент, функция, если вы забыли, будет нужна для установления порога среднего балла. К примеру, вводим порог, и все студенты ниже не будут отображаться.

⁉️0️⃣ Что делает students.items() вообще, это метод словарей в Python, который возвращает все пары ключ-значение (у нас он будет возвращает из словаря students). Важно понимать, что это действие выполнится первым,

students = { #Из прошлого примера берем
"Brovscki": 4.5,
"Мaria": 3.8,
"Antony": 4.9
}


⚙️1️⃣ Дальше цикл for → for name, average_rating in students.items()

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

🔗2️⃣ Но цикл то нам не просто так нужен, он проходит по всем парам ключ-значение, в то время как условный оператор выполняется на каждой операции:

if average_rating > threshold:


🔗 Так, ну тут как раз условие на "прохождение порога оценок", если этот самый порог выше среднего балла, студент попадет в новый словарь.

‼️3️⃣ Теперь можно и новый словарь создать, где и будут находиться студенты с оценкой выше порога ↓

name: average_rating


🧑‍💻 Кароч, суть функции в том, что для каждой пары из словаря {students} (эти самые пары еще и проверку проходят), создается новая пара в новом словаре:

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.3
top_students = get_top_students(students, threshold)
print(top_students)
8👨‍💻21❤‍🔥1🤯1
Пора думать гайс, а то вам все хиханьки да хаханьки 🤫

#1
def calculate_difference(x, y):
return x - y if x > y else y - x

result = calculate_difference(10, 4)
print(result)
3❤‍🔥21👍1👨‍💻1
❤‍🔥21👍1🤡1👨‍💻1
#2

def sum_range(a, b):
total = 0
for i in range(a, b, 2):
total += i
return total

result = sum_range(1, 8)
print(result)
5👨‍💻21❤‍🔥1👍1
👀2❤‍🔥11👍1🤡1
#3

def func(n):
if n == 0:
return 1
else:
return n * func(n - 1)

result = func(5)
result //= 2
print(result)
3❤‍🔥21👍1👨‍💻1👀1
❤‍🔥11👍1🤡1👨‍💻1
💀#4

def main_func(n):
def not_main_func(x):
return x * 2
return not_main_func(n) + not_main_func(n + 1)

result = main_func(3)
print(result)
2👀2❤‍🔥11👍1
❤‍🔥21👍1🤡1👨‍💻1
#5 Я пошел спать гайс, всем сладких 💤❤️

def mystery_function(a, b):
return (a ** b) % (a + b)

result = mystery_function(3, 4)
print(result)
51❤‍🔥1👍1👀1