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

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
#2 Какой будет вывод?
Anonymous Quiz
67%
-9
11%
-1
0%
9
0%
1
0%
13
11%
24
11%
12
0%
15
❤‍🔥1👍1
#3 Попробуйте дать ответ, завтра мы разберем подробно работу этой функции

def func_1(n):
def multiply(x):
return x * x
return multiply(n) + multiply(n - 1)

result = func_1(4)
print(result)
❤‍🔥1👍1👨‍💻1
2👍1
Гайс, всем сладких снов 💤

🧑‍💻Завтра нам надо начать писать главную функцию для нашего года, поэтому набирайтесь сил
2❤‍🔥2🥰1🤯1
Создаем отдельный чат для общения? 💬
Anonymous Poll
71%
Да
29%
Нет (тоже да)
❤‍🔥1🥰1
🧑‍💻 Так, ща быстренько напишем часть функции, с утра соберем код и перейдем на неделю к машинному обучению:

0️⃣ Объявим функцию:

def main():


1️⃣ Бесконечный цикл для повторений (логично) и вызываем функцию 🟰student_data()🟰 (По итогу, функция возвратит словарь {students}, который мы создавали тут,
ключами у нас служили имена студентов, а значения — их оценки)


    while True:
students = student_data()


2️⃣ Пишем условие на тот случай, если словарь будет пуст, 🟰continue🟰 для возвращения в начало кода ( Если условие будет True, словарь будет пуст, то возвращаемся к началу цикла ) :

if not students:
print("Нет данных")
continue


3️⃣ О функции ниже можете почитать можете почитать тут

‼️ Как раз здесь мы создаем новый словарь, {student_averages}, 🟰name🟰 становится ключом (имя студента), 🟰calculate_average(grades)🟰 становится значением (средний балл для списка оценок студента).

student_averages = {name: calculate_average(grades) for name, grades in students.items()}


❗️ Цикл 🟰for🟰 проходит по всем по всем элементам в {students}. На каждой итерации он берёт ключ name и значение — список оценок grades.

 for name, grades in students.items()}


🔗 Вот вам пример:

students = {
"Brovscki": 4,5,3
"Мaria": 5,5,4
}


🟰students🟰 даст результат {'Brovscki: 4.0, 'Мaria': 4.67}.

С утра допишем код и все будет готово, всем сладких 💤
11❤‍🔥4👍1🥰1🤡1
Сори гайс, день был очень загруженный, завтра напишу полноценный пост

А пока, держите:


def get_name_and_decades(name, age):
print(f"My name is {name} and I'm {age / 10:.5f} decades old.")

get_name_and_decades("Leo", 31)
3❤‍🔥2🥰1
Всем Доброе утро!

🧑‍💻Ща мы быстренько разберем конец программы, вчера совсем забегался, но зато сегодня - завтра опубликую несколько хороших постов 😋

0️⃣ Последнее, на чем мы остановились, это создание словаря, где ключ-значение — это Имя студента и рассчитанный по формуле средний балл.

1️⃣ Теперь выведем средние баллы студентов (пока что без порога)

print("\nСредний балл студентов:")
for name, average_rating in student_averages.items():
print(f"{name}: {average_rating:.2f}") #округление среднего балла до двух знаков после запятой


2️⃣ Нам нужно как то найти тех самых отличившихся студентов, поэтому пусть программа спросит порог для оценивания (для последующего вывода студентов с баллами выше порога)

threshold = float(input("\nВведите порог для вывода студентов с баллом выше: "))
top_students = get_top_students(student_averages, threshold)


‼️ Касаемо функции 🟰get_top_students()🟰, о ней мы писали тут (Если что, она возвращает студентов с баллами выше порога. который мы ставим сами)

3️⃣‼️ На данном этапе функция get_top_students выбирает из словаря student_averages только тех студентов, чей средний балл выше указанного порога (у нас это переменная threshold), и сохраняет их в новый словарь top_students. Этот наш новый словарь содержит только тех студентов, которые прошли этот фильтр, то есть у которых средний балл больше порога.

3️⃣🔗 Теперь проверим, если у нас в словаре есть ключ - значение для студентов с их оценками (выше порога, конечно)

if top_students: # Если тут есть данные, то:
print("\nСтуденты с баллом выше порога:")
for name, average_rating in top_students.items():
print(f"{name}: {avg:.2f}") #Выводим данные по студентам на экран (ключ - значение)
else:
print("Нет студентов с баллом выше порога.")


4️⃣🔗 Теперь выведем студента с наивысшим средним баллом:

print_top_student(student_averages)


5️⃣🔗 Пишем повтор программы (вдруг мы что-то не ввели), иначе программа останавливается

repeat = input("\nХотите ввести данные заново? (да/нет): ").lower()
if repeat != 'да':
print("Программа завершена.")
break


🧑‍💻 Итак, мы это все дописали, постараюсь днем выложить пару тестиков, чтобы вы не расслаблялись особо, а вечером мы скомпонуем весь код и посмотрим что как работает.
17🤓3❤‍🔥21🥰1
🗂Необходимо собрать и вывести все уникальные слова из строки рекламного текста. Какой из перечисленных типов данных🐍 Python подходит лучше всего?
Anonymous Quiz
10%
кортеж (tuple)
67%
множество (set)
10%
словарь (dict)
14%
список (list)
❤‍🔥21👍1🥰1
🧑‍💻 Вот и готов наш код, завтра допишу навигацию, чтобы вы с кайфом могли с этим всем разобраться:

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

def calculate_average(grades):
return sum(grades) / len(grades) if grades else 0

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


def print_top_student(students):

if not students:
print("Нет данных о студентах.")
return
top_student = max(students, key=students.get)
print(f"Студент с наивысшим средним баллом: {top_student} ({students[top_student]:.2f})")


def main():

while True:
students = student_data()

if not students:
print("Нет данных для анализа.")
continue


student_averages = {name: calculate_average(grades) for name, grades in students.items()}


print("\nСредний балл студентов:")
for name, average_rating in student_averages.items():
print(f"{name}: {average_rating:.2f}")


threshold = float(input("\nВведите порог для вывода студентов с баллом выше: "))
top_students = get_top_students(student_averages, threshold)

if top_students:
print("\nСтуденты с баллом выше порога:")
for name, average_rating in top_students.items():
print(f"{name}: {average_rating:.2f}")
else:
print("Нет студентов с баллом выше порога.")


print_top_student(student_averages)


repeat = input("\nХотите ввести данные заново? (да/нет): ").lower()
if repeat != 'да':
print("Программа завершена.")
break


main()
14❤‍🔥2🤯2👍1🤓1👨‍💻1
Как то пару дней назад я делал тест с такой функцией, давайте быстренько ее разберем:

def func_1(n):
def multiply(x):
return x * x
return multiply(n) + multiply(n - 1)

result = func_1(4)
print(result)


0️⃣ Для начала объявим функцию 🟰def func_1(n):🟰‼️ Как раз туда мы и передадим аргумент 4

1️⃣ Внутри 'внешней функции' будет находиться 🟰def multiply(x):🟰, она будет возвращать квадрат числа (x * x).

2️⃣ После того, как мы объявили функцию 🟰def multiply(x):🟰, во 'внешнюю' функцию 🟰def func_1(n):🟰 возвращается сумма двух вызовов multiply

return multiply(n) + multiply(n - 1)


3️⃣ Кароч, чтобы было понятно: мы передаем аргумент n = 4 в 🟰func_1🟰 → затем, в функции 🟰func_1🟰 определена функция 🟰multiply(x)🟰, при ее вызове мы как раз передаем аргумент x → воот, внутри функции multiply, x = 4 (‼️Потому что n — это просто переменная func_1, которую мы передаем в multiply как аргумент x, когда вызываем multiply(n)‼️), x * x даст 4 * 4 = 16multiply(n - 1) — это вызов multiply(3).

Тройка передается в multiply и становится значением x. Ну, тут точно также как с четверкой, 3 * 3 = 9. Два результата складываются и получаем 25
19❤‍🔥31🥰1
CodeLab
⚙️ Итак, здарова работяги, ща рассмотрим пример из книги: 👨‍💻Сам пример посложнее, мы можем близко предсказать, но вот с точностью могут быть проблемы. 🔗 Таблица показывает данные о домах с разным количеством комнат и их ценах. ⭕️ Цена дома напрямую зависит…
🧑‍💻 Так, продолжаем машинку, завтра мб выложу тесты)

Помните мы написали формулу цена=100+50×количество комнат+небольшое расхождение.

⭕️ Когда мы говорим, что наклон
прямой равен 50, это означает, что каждый раз, добавляя в дом одну комнату, мы вычисляем, что цена дома вырастет на 50 долларов. Когда говорим, что y-пересечение прямой равно 100, это означает, что стоимость гипотетического
дома с нулевым количеством комнат базовая — 100 долларов.
4❤‍🔥2🥰1
🟰Алгоритм линейной регрессии🟰

Немного теории, которая нам пригодится:

🔗 Входные данные — набор точек на плоскости.

🔗 Результат — прямая, проходящая близко к точкам

🔗 Процедура — выбираем случайную прямую → выбираем случайную точку данных → перемещаем прямую немного ближе к ней ( повторяем это )

🔗 Возврат — полученная прямая

p — цена дома в наборе данных;
Y — прогнозируемая цена дома;
r — количество комнат;
m — цена за комнату;
b — базовая цена за дом.


Теперь формула:

🟰Y = mr + b🟰 прогнозируемая цена = цена за комнату × количество комнат + базовая цена дома

⭕️ Допустим, цена за комнату — 50000, у нас 3 комнаты в доме, а базовая цена 200000, как мог бы выглядеть код:


def predict_price(m, r, b):

return m * r + b

price_per_room = 50000
number_of_rooms = 3
base_price = 200000

predicted_price = predict_price(price_per_room, number_of_rooms, base_price)
print(f"Прогнозируемая цена дома: ${predicted_price}")
5❤‍🔥2👍1🤓1👨‍💻1
def multiply(a = 2, b=7):
return a * b
result = multiply(3) print(result)
Anonymous Quiz
19%
3
0%
6
6%
7
0%
24
56%
21
19%
14
❤‍🔥2🤓2
Опрос будет внизу под постом 👇🏻

def func(x):
return x + 5

def main():
return func(5) + func(10)

print(main())
3❤‍🔥2👨‍💻1
Каким будет ответ?
Anonymous Quiz
87%
25
0%
14
13%
18
0%
35
0%
40
👀3❤‍🔥2
🧑‍💻 Всем ку, разберем небольшой код с утра:

📈 Итак, в чем суть, у нас есть строка "aaabbvvvvccd", а мы будем должны ее сократить как то так -- a3b2v4c2d1

0️⃣ Объявим функцию для начала def compress_string(s): и проверим строку на наличие символов. Типо если строка s пустая, функция возвращает пустую строку.

def compress_string(s):    
if not s:
return " "


1️⃣ Создадим список (туда будем заносить измененные строчки) и счетчик (для подсчета повторяющихся букв):

    listt = []
count = 1


2️⃣🔗 Теперь основной цикл:

    for i in range(1, len(s)): # Мы начинаем с индекса 1 (у нас это второй символ) и проходим по всей строке до конца
if s[i] == s[i - 1]: # Если текущий равен предыдущему:
count += 1 # Увеличиваем счетчик на 1


3️⃣⚙️ Иначе:

        else:
listt.append(s[i - 1] + str(count)) #Если текущий символ не равен предыдущему, последовательность закончилась. Это значит, что вся строка добавляет в список listt[] строку, состоящую из символа и его количества (как раз то, что нам нужно)

count = 1 # Обновляем счетчик, чтобы начать подсчет для новой буквы


4️⃣🔗 После завершения цикла мы добавляем последний символ и его количество в список (последний символ не будет обработан в цикле)

    listt.append(s[-1] + str(count)) # Мы соединяем все элементы в списке listt в одну строку с помощью ''.join(listt) и возвращаем результат 
return ''.join(listt) # Об этом поговорим еще сегодня

print(compress_string("aaabbvvvvccd"))


🔗Весь код:

def compress_string(s):    
if not s:
return " "
listt = []
count = 1
for i in range(1, len(s)):
if s[i] == s[i - 1]:
count += 1
else:
listt.append(s[i - 1] + str(count))

count = 1

listt.append(s[-1] + str(count))
return ''.join(listt)
print(compress_string("aaabbvvvvccd"))
7❤‍🔥2🥰1🤯1🤡1👨‍💻1