Kodduu Python
1.07K subscribers
313 photos
28 videos
188 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
Для тех кому некогда, но очень нужно выучить Python запустили самый короткий курс (как раз можно пройти за январские праздники), скидка тоже прилагается https://stepik.org/a/187914
Давайте рассмотрим пример анализа данных с использованием методов машинного обучения. Мы будем использовать библиотеку pandas для обработки данных, scikit-learn для моделирования и matplotlib для визуализации.

Предположим, у нас есть набор данных, содержащий информацию о клиентах банка, и наша задача — предсказать, склонен ли клиент уйти (отток клиентов). Это типичная задача классификации в машинном обучении.

Предположим, у нас есть файл bank_customers.csv, который содержит колонки, такие как возраст клиента, баланс на счете, количество продуктов банка, используемых клиентом, и статус активности, а также целевая переменная Exited, указывающая, ушел клиент или нет.

Вот примерный код:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

# Загрузка данных
data = pd.read_csv('bank_customers.csv')

# Подготовка данных для модели
X = data.drop('Exited', axis=1) # Удаление целевой переменной
y = data['Exited']

# Разделение данных на обучающую и тестовую выборку
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Создание и обучение модели
model = RandomForestClassifier()
model.fit(X_train, y_train)

# Оценка модели
predictions = model.predict(X_test)
print(classification_report(y_test, predictions))

# Визуализация матрицы ошибок
conf_matrix = confusion_matrix(y_test, predictions)
plt.figure(figsize=(10,6))
sns.heatmap(conf_matrix, annot=True, fmt='g')
plt.title('Матрица ошибок')
plt.xlabel('Предсказанное значение')
plt.ylabel('Истинное значение')
plt.show()


В этом коде мы сначала загружаем данные и подготавливаем их для моделирования, разделяя на обучающую и тестовую выборки. Затем мы используем алгоритм случайного леса (RandomForestClassifier) из scikit-learn для создания и обучения модели. После обучения модели мы оцениваем её производительность на тестовых данных, выводим отчёт о классификации и строим матрицу ошибок для визуализации результатов. Это позволяет нам понять, насколько хорошо модель способна предсказывать отток клиентов.

Подпишись 👉🏻 @KodduuPython 🤖
👍3
Для веб-разработки на Python часто используется фреймворк Flask, который позволяет легко создавать веб-приложения. Давайте создадим простое веб-приложение на Flask, которое будет отображать приветственное сообщение и предоставлять форму для ввода имени пользователя. После отправки формы пользователь увидит персонализированное приветствие.

Вот базовый код для такого приложения:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/')
def index():
return render_template('index.html')

@app.route('/greet', methods=['POST'])
def greet():
name = request.form['name']
return render_template('greet.html', name=name)

if __name__ == '__main__':
app.run(debug=True)


В этом коде есть два маршрута:
- Один для главной страницы (index), который отображает форму.
- Другой (greet) для обработки отправленных данных и отображения персонализированного приветствия.

Теперь вам понадобятся два HTML-шаблона: index.html и greet.html.

index.html:
html
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome to our site!</h1>
<form action="/greet" method="post">
<input type="text" name="name" placeholder="Enter your name">
<input type="submit" value="Greet me!">
</form>
</body>
</html>


greet.html:
html
<!DOCTYPE html>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
<a href="/">Go back</a>
</body>
</html>


Чтобы запустить это приложение, вам нужно установить Flask, создать эти файлы в соответствующей структуре директорий и запустить скрипт Python. После запуска вы сможете перейти по адресу http://localhost:5000 в вашем веб-браузере и увидеть приложение в действии.

Этот пример демонстрирует базовые возможности Flask, включая маршрутизацию, обработку запросов и использование шаблонов.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим ещё один пример веб-приложения на Python, используя Flask. На этот раз создадим простой блог, где пользователи могут добавлять и просматривать посты. Будем использовать SQLite в качестве базы данных для хранения постов.

Вот базовый код для такого приложения:

from flask import Flask, request, render_template, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///posts.db'
db = SQLAlchemy(app)

class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)

def __repr__(self):
return 'Post ' + str(self.id)

@app.route('/')
def index():
posts = Post.query.all()
return render_template('index.html', posts=posts)

@app.route('/add', methods=['GET', 'POST'])
def add_post():
if request.method == 'POST':
post_title = request.form['title']
post_content = request.form['content']
new_post = Post(title=post_title, content=post_content)
db.session.add(new_post)
db.session.commit()
return redirect(url_for('index'))
return render_template('add_post.html')

if __name__ == '__main__':
db.create_all()
app.run(debug=True)


В этом коде определена модель Post для хранения постов. Есть два маршрута:
- Один для главной страницы (index), который отображает все посты.
- Другой (add_post) для добавления новых постов.

Теперь создадим два HTML-шаблона: index.html и add_post.html.

index.html:
html
<!DOCTYPE html>
<html>
<head>
<title>Simple Blog</title>
</head>
<body>
<h1>Welcome to the Simple Blog</h1>
<a href="/add">Add new post</a>
<div>
{% for post in posts %}
<div>
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
</div>
{% endfor %}
</div>
</body>
</html>


add_post.html:
html
<!DOCTYPE html>
<html>
<head>
<title>Add Post</title>
</head>
<body>
<h1>Add Post</h1>
<form method="POST">
<input type="text" name="title" placeholder="Post title" required>
<textarea name="content" placeholder="Post content" required></textarea>
<input type="submit" value="Add Post">
</form>
<a href="/">Back to Home</a>
</body>
</html>


Этот пример демонстрирует, как можно создать простой блог с использованием Flask и SQLite. Пользователи могут добавлять новые посты, которые затем отображаются на главной странице.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте попробуем что-то из области анализа изображений с использованием Python. Мы создадим скрипт, который будет использовать библиотеку OpenCV для обнаружения и выделения лиц на фотографии. Это классическая задача в области компьютерного зрения.

Прежде всего, вам понадобится установить библиотеку OpenCV, если она ещё не установлена. Это можно сделать с помощью pip:

pip install opencv-python


Теперь давайте напишем код:

import cv2
import sys

def detect_faces(image_path):
# Загрузка изображения и каскада Хаара для обнаружения лиц
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Обнаружение лиц
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)

# Рисование прямоугольников вокруг лиц
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

# Вывод обработанного изображения
cv2.imshow("Faces found", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# Пример использования функции
image_path = 'path_to_your_image.jpg' # Замените на путь к вашему изображению
detect_faces(image_path)


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

Обратите внимание, что для работы этого кода вам нужно предоставить путь к изображению, на котором вы хотите обнаружить лица.

Подпишись 👉🏻 @KodduuPython 🤖
Если у Вас есть знакомые и друзья кому тоже некогда, но надо с чего то начать в ИТ, то самый короткий курс по Python (как раз чтобы пройти на январских праздниках) будет лучшим подарком. Скидка прилагается 🎅
Как насчет создания небольшой программы на Python для генерации QR-кодов? Это полезно для различных задач, например, для быстрого создания ссылок, информации о контактах или Wi-Fi паролей в формате QR-кода. Мы воспользуемся библиотекой qrcode для генерации QR-кодов.

Для начала вам нужно установить библиотеку qrcode, если она ещё не установлена. Это можно сделать с помощью pip:

pip install qrcode[pil]


Теперь, когда у нас есть необходимая библиотека, давайте напишем код:

import qrcode
from PIL import Image

def generate_qr_code(data):
# Создание экземпляра QR-кода
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(data)
qr.make(fit=True)

# Создание изображения QR-кода
img = qr.make_image(fill_color="black", back_color="white")

# Сохранение или отображение QR-кода
img.save("qr_code.png")
img.show()

# Пример использования функции
data = 'https://www.example.com' # Замените на данные, которые вы хотите закодировать
generate_qr_code(data)


В этом коде функция generate_qr_code принимает строку (например, URL-адрес) и генерирует соответствующий QR-код. Сгенерированный QR-код сохраняется в файле qr_code.png и отображается на экране.

Это простой и практичный пример, который можно использовать для быстрого создания QR-кодов для различных нужд.

Подпишись 👉🏻 @KodduuPython 🤖
🔥2
Давайте создадим забавную игру на Python. Игра будет запрашивать у пользователя ввести пароль, а затем каждый раз предъявлять всё более странные и смешные требования к паролю. Вот пример такого кода:

import random
import string
import time

def contains_three_digits(password):
return sum(c.isdigit() for c in password) >= 3

def no_abc(password):
return all(c not in 'abc' for c in password)

def starts_and_ends_with_digit(password):
return password[0].isdigit() and password[-1].isdigit()

def length_between_10_and_15(password):
return 10 <= len(password) <= 15

def contains_punctuation(password):
return any(c in string.punctuation for c in password)

def no_vowels(password):
return all(c not in 'aeiouAEIOU' for c in password)

def contains_upper_and_lower(password):
return any(c.isupper() for c in password) and any(c.islower() for c in password)

def is_palindrome(password):
return password == password[::-1]

def contains_current_time(password):
current_time = time.strftime("%H:%M")
return current_time in password

def not_in_full_name(password, full_name):
return all(c.lower() not in full_name.lower() for c in password)

# Список требований и соответствующих функций
demands = [
("Пароль должен содержать хотя бы три цифры.", contains_three_digits),
("Пароль не должен содержать буквы 'a', 'b' и 'c'.", no_abc),
("Пароль должен начинаться и заканчиваться цифрой.", starts_and_ends_with_digit),
("Пароль должен быть длиннее 10 символов, но короче 15.", length_between_10_and_15),
("Пароль должен содержать хотя бы один знак пунктуации.", contains_punctuation),
("Пароль не должен содержать гласных букв.", no_vowels),
("Пароль должен содержать хотя бы одну заглавную и одну строчную букву.", contains_upper_and_lower),
("Пароль должен быть палиндромом.", is_palindrome),
("Пароль должен содержать текущее время до минуты.", contains_current_time),
# Для следующего требования нужно ввести своё полное имя
("Пароль должен быть составлен только из букв, которые не входят в ваше полное имя.", lambda p: not_in_full_name(p, "ВашеПолноеИмя"))
]

def get_random_demand():
return random.choice(demands)

print("Добро пожаловать в игру 'Невозможный пароль'!")

current_demand_text, current_demand_func = get_random_demand()
print(f"Требование к паролю: {current_demand_text}")
password = input("Введите ваш пароль: ")

while True:
if current_demand_func(password):
print(f"Отлично! Вы выполнили требование: {current_demand_text}")
current_demand_text, current_demand_func = get_random_demand()
print(f"Новое требование к паролю: {current_demand_text}")
else:
print(f"Требование не выполнено: {current_demand_text}")
password = input("Введите пароль: ")


Подпишись 👉🏻 @KodduuPython 🤖🎅
Давайте создадим ещё одну забавную игру на Python. Эта игра будет называться "Угадай число с подсказками". Игрок должен будет угадать случайное число от 1 до 100, а программа будет давать смешные и необычные подсказки, чтобы помочь ему.

Вот пример кода для этой игры:

import random

def generate_hint(number, guess):
if guess < number:
return random.choice([
"Слишком низко, как температура пингвинов в Антарктиде!",
"Как карликовая планета, ты не дотягиваешь до стандартов!",
"Это число, как мои ожидания от последнего фильма, ниже, чем нужно."
])
elif guess > number:
return random.choice([
"Слишком высоко, как спутник в космосе!",
"Это число больше, чем количество уток, которые я видел вчера в парке!",
"Ты промахнулся, как археолог, копающий в неправильном месте."
])
else:
return "Поздравляю! Ты угадал число!"

def guess_the_number():
number_to_guess = random.randint(1, 100)
attempts = 0

print("Добро пожаловать в игру 'Угадай число с подсказками'!")
print("Я загадал число от 1 до 100. Попробуй угадать его!")

while True:
try:
guess = int(input("Введи число: "))
attempts += 1
hint = generate_hint(number_to_guess, guess)

print(hint)

if guess == number_to_guess:
print(f"Ты угадал число за {attempts} попыток!")
break
except ValueError:
print("Пожалуйста, вводи только числа.")

guess_the_number()


В этой игре программа загадывает число от 1 до 100, а игрок пытается его угадать. После каждой попытки программа предоставляет забавные подсказки, которые подталкивают игрока в правильном направлении. Это делает игру весёлой и интерактивной.

Подпишись 👉🏻 @KodduuPython 🤖🎅
Давайте создадим ещё одну забавную игру. Назовём её "Волшебный шар предсказаний". Это будет интерактивная игра, где пользователь задаёт вопрос, а программа даёт случайный забавный или мудрый ответ, подобно волшебному шару 8.

Вот пример кода для этой игры:

import random

def get_prediction():
responses = [
"Бесспорно",
"Предрешено",
"Никаких сомнений",
"Определённо да",
"Можешь быть уверен в этом",
"Мне кажется — да",
"Вероятнее всего",
"Хорошие перспективы",
"Знаки говорят — да",
"Да",
"Пока не ясно, попробуй снова",
"Спроси позже",
"Лучше не рассказывать",
"Сейчас нельзя предсказать",
"Сконцентрируйся и спроси опять",
"Даже не думай",
"Мой ответ — нет",
"По моим данным — нет",
"Перспективы не очень хорошие",
"Весьма сомнительно"
]
return random.choice(responses)

def magic_8_ball():
print("Добро пожаловать в 'Волшебный шар предсказаний'!")
print("Задай вопрос, и я дам ответ на него.")

while True:
question = input("Задай свой вопрос (или введи 'выход' для завершения игры): ")
if question.lower() == 'выход':
break
else:
prediction = get_prediction()
print(f"Волшебный шар говорит: {prediction}")

magic_8_ball()


В этой игре пользователь может задать любой вопрос, и программа предоставит случайный ответ из заранее подготовленного списка. Это интерактивный и забавный способ имитировать классическую игрушку "волшебный шар 8".

Подпишись 👉🏻 @KodduuPython 🤖🎅
Если пока еще не решили что дарить на НГ - не забудьте про самый короткий курс по Python, пoдoйдёт всем кто хочет начать карьеру в ИТ. Скидка в силе!