debug's files (Prompt Library)
1.38K subscribers
642 photos
33 files
8 links
Это Prompt Library: всё для копирования и файлов.

Каталог материалов из @debugblog
Download Telegram
Простейший менеджер паролей 👩‍💻
#Pythone
Работает в консольке

import jsonimport os
import randomimport string
from cryptography.fernet import Fernet
# Сохраняем ключ шифрованияdef generate_key():
key = Fernet.generate_key() with open("secret.key", "wb") as key_file:
key_file.write(key)
# Читаем ключик
def load_key(): return open("secret.key", "rb").read()
# Генератор
def generate_password(length=12): characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(random.choice(characters) for i in range(length)) return password
# Шифрование
def encrypt_message(message, key): f = Fernet(key)
encrypted_message = f.encrypt(message.encode()) return encrypted_message
# Дешифрование
def decrypt_message(encrypted_message, key): f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message).decode() return decrypted_message
# Сохранение пароля
def save_password(service, password, key): if not os.path.exists('passwords.json'):
data = {} else:
with open('passwords.json', 'r') as file: data = json.load(file)
encrypted_password = encrypt_message(password, key)
data[service] = encrypted_password.decode()
with open('passwords.json', 'w') as file: json.dump(data, file)
# Получение пароля
def get_password(service, key): with open('passwords.json', 'r') as file:
data = json.load(file)
encrypted_password = data.get(service)
if encrypted_password is None: print(f"Сервис '{service}' не найден.")
return None
return decrypt_message(encrypted_password.encode(), key)
if __name__ == "__main__":
# Проверка ключа if not os.path.exists("secret.key"):
generate_key()
key = load_key()
while True: print("\nМенеджер паролей")
print("1. Сохранить новый пароль") print("2. Получить пароль")
print("3. Выйти")
choice = input("Выберите опцию: ")
if choice == "1": service = input("Введите название сервиса: ")
password = generate_password() save_password(service, password, key)
print(f"Пароль для {service} сохранен: {password}")
elif choice == "2": service = input("Введите название сервиса для получения пароля: ")
password = get_password(service, key) if password:
print(f"Пароль для {service}: {password}")
elif choice == "3": break
else:
print("Неверный выбор. Попробуйте снова.")
Please open Telegram to view this post
VIEW IN TELEGRAM
Проект по анализу онлайн-магазина 👩‍💻
#Python

Структура проекта
project/

├── data/
│ └── user_actions.csv

├── app/
│ ├── __init__.py
│ ├── data_preprocessing.py
│ ├── model_training.py
│ ├── api.py

└── run.py


data_preprocessing.py
Этот файл будет содержать функции для предобработки данных
# app/data_preprocessing.py
import pandas as pd

def load_and_preprocess_data(filepath):
data = pd.read_csv(filepath)
data['visit_time'] = pd.to_datetime(data['visit_time'])
data['visit_day'] = data['visit_time'].dt.day
data['visit_hour'] = data['visit_time'].dt.hour
data = pd.get_dummies(data, columns=['traffic_source'])
data['time_since_last_visit'] = data.groupby('user_id')['visit_time'].diff().dt.total_seconds().fillna(0)
return data


model_training.py

Этот файл будет содержать функции для обучения модели
# app/model_training.py
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score

def train_model(data):
X = data.drop(columns=['user_id', 'visit_time', 'purchases'])
y = data['purchases']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = GradientBoostingClassifier()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

return model, accuracy


api.py
Этот файл будет содержать код для реализации API
# app/api.py
from flask import Flask, request, jsonify
import pandas as pd
from app.data_preprocessing import load_and_preprocess_data
from app.model_training import train_model

app = Flask(__name__)

# Загрузим и предобработаем данные
data = load_and_preprocess_data('data/user_actions.csv')
model, accuracy = train_model(data)

@app.route('/predict', methods=['POST'])
def predict():
user_data = request.get_json()
user_df = pd.DataFrame([user_data])
user_df['visit_time'] = pd.to_datetime(user_df['visit_time'])
user_df['visit_day'] = user_df['visit_time'].dt.day
user_df['visit_hour'] = user_df['visit_time'].dt.hour
user_df = pd.get_dummies(user_df, columns=['traffic_source'])

for col in data.drop(columns=['user_id', 'visit_time', 'purchases']).columns:
if col not in user_df.columns:
user_df[col] = 0

prediction = model.predict_proba(user_df)[:, 1]
return jsonify({'purchase_probability': prediction[0]})

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


run.py
Этот файл запускает Flask-приложение
# run.py
from app.api import app

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


👩‍💻 Для запуска следуйте инструкции: run.py
Please open Telegram to view this post
VIEW IN TELEGRAM
Запуск проекта по анализу онлайн-магазина 👩‍💻

Установка зависимостей:
pip install pandas scikit-learn flask


Запустите Flask-приложение командой:
python run.py


Используйте инструмент вроде Postman или отправьте POST-запрос с помощью curl для тестирования API.
Пример запроса с помощью curl:
curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d '{
"visit_time": "2023-07-01 12:34:56",
"page_views": 5,
"time_on_site": 300,
"add_to_cart": 1,
"traffic_source": "search"
}'
Please open Telegram to view this post
VIEW IN TELEGRAM
Скрабер ключевых слов на Python
#Python

import string
from collections import Counter

def keyword_scraper(filename, threshold):
"""
Скрабер ключевых слов из текстового файла с фильтрацией редких слов.

:param filename: Имя текстового файла.
:param threshold: Порог частоты слов для их включения в вывод.
:return: None
"""
try:
with open(filename, 'r') as file: # Открываем и читаем файл
text = file.read()

text = text.lower() # Приводим текст к нижнему регистру

translator = str.maketrans('', '', string.punctuation) # Удаляем знаки препинания
text = text.translate(translator)

words = text.split() # Разбиваем текст на слова

word_counts = Counter(words) # Считаем количество вхождений каждого слова

filtered_word_counts = {word: count for word, count in word_counts.items() if count >= threshold} # Фильтруем слова по порогу частоты

sorted_word_counts = sorted(filtered_word_counts.items(), key=lambda item: item[1], reverse=True) # Сортируем слова по убыванию частоты

for word, count in sorted_word_counts: # Выводим результат
print(f'{word}: {count}')

except FileNotFoundError:
print(f"Файл {filename} не найден.")
except Exception as e:
print(f"Произошла ошибка: {e}")

# Пример использования
keyword_scraper('example.txt', 2)


Вот так все просто 😳
Please open Telegram to view this post
VIEW IN TELEGRAM
Генератор ключей шифрования 👩‍💻
#pythone

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend

def generate_keys():
# Генерация приватного ключа
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)

# Генерация публичного ключа из приватного
public_key = private_key.public_key()

# Сериализация приватного ключа
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.BestAvailableEncryption(b'mypassword')
)

# Сериализация публичного ключа
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)

# Сохранение ключей в файлы
with open('private_key.pem', 'wb') as private_file:
private_file.write(private_pem)

with open('public_key.pem', 'wb') as public_file:
public_file.write(public_pem)

print("Ключи успешно сгенерированы и сохранены в файлы private_key.pem и public_key.pem")

if __name__ == "__main__":
generate_keys()
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Сравнение алгоритмов поиска на #Python

import time

# Функция для линейного поиска
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1

# Функция для бинарного поиска
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1

# Генерация большого массива
import random
large_arr = random.sample(range(1, 100000000), 10000000) # Массив из 10000000 уникальных чисел
target = large_arr[random.randint(0, 9999999)] # Случайный элемент из массива

# Время выполнения линейного поиска
start_time = time.time()
linear_search(large_arr, target)
end_time = time.time()
print(f"Линейный поиск занял: {end_time - start_time:.6f} секунд")

# Время выполнения бинарного поиска
large_arr.sort() # Сортировка массива
start_time = time.time()
binary_search(large_arr, target)
end_time = time.time()
print(f"Бинарный поиск занял: {end_time - start_time:.6f} секунд")


Для сравнения 😎
Линейный поиск занял: 0.236526 секунд
Бинарный поиск занял: 0.000000 секунд
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Генератор Гороскопов на #Python

import random
import datetime

# Определим знаки зодиака
zodiac_signs = {
"Овен": (datetime.date(2023, 3, 21), datetime.date(2023, 4, 19)),
"Телец": (datetime.date(2023, 4, 20), datetime.date(2023, 5, 20)),
"Близнецы": (datetime.date(2023, 5, 21), datetime.date(2023, 6, 20)),
"Рак": (datetime.date(2023, 6, 21), datetime.date(2023, 7, 22)),
"Лев": (datetime.date(2023, 7, 23), datetime.date(2023, 8, 22)),
"Дева": (datetime.date(2023, 8, 23), datetime.date(2023, 9, 22)),
"Весы": (datetime.date(2023, 9, 23), datetime.date(2023, 10, 22)),
"Скорпион": (datetime.date(2023, 10, 23), datetime.date(2023, 11, 21)),
"Стрелец": (datetime.date(2023, 11, 22), datetime.date(2023, 12, 21)),
"Козерог": (datetime.date(2023, 12, 22), datetime.date(2024, 1, 19)),
"Водолей": (datetime.date(2024, 1, 20), datetime.date(2024, 2, 18)),
"Рыбы": (datetime.date(2024, 2, 19), datetime.date(2024, 3, 20))
}

# Наборы фраз для генерации гороскопов
beginnings = [
"Сегодня вас ждет", "На вашем пути будет", "Ожидайте",
"Готовьтесь к", "День принесет вам"
]
middles = [
"неожиданное событие,", "приятная встреча,", "интересное предложение,",
"новая возможность,", "вдохновляющий момент,"
]
ends = [
"которое изменит ваше представление о жизни.",
"которое подарит вам много положительных эмоций.",
"которое потребует от вас решительности.",
"которое укрепит ваши отношения с близкими.",
"которое принесет вам финансовую выгоду."
]

# Функция для генерации уникального гороскопа
def generate_horoscope():
return f"{random.choice(beginnings)} {random.choice(middles)} {random.choice(ends)}"

# Функция для получения гороскопа по периоду
def get_horoscope(period):
horoscopes = {
"день": generate_horoscope(),
"месяц": generate_horoscope(),
"год": generate_horoscope()
}
return horoscopes.get(period.lower(), "Неверный период")

# Основная функция
def main():
sign = input("Введите ваш знак зодиака: ").title()
if sign not in zodiac_signs:
print("Неверный знак зодиака.")
return

period = input("Гороскоп на (день, месяц, год): ").lower()

horoscope = get_horoscope(period)
print(f"{sign}: {horoscope}")

if __name__ == "__main__":
main()
Please open Telegram to view this post
VIEW IN TELEGRAM
onlineshop.py
7.5 KB
👩‍💻 Простейший онлайн магазин на #Python
Не использует никакие API
Please open Telegram to view this post
VIEW IN TELEGRAM
viselitsya.py
5.2 KB
Игра Виселица на #Python 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
pingpong.py
3.2 KB
👩‍💻 Пинг-понг на двоих 😁
на #Python
Please open Telegram to view this post
VIEW IN TELEGRAM
tommy.py
6.1 KB
👩‍💻 Генератор цитаток из фильма Комната на #Python
Please open Telegram to view this post
VIEW IN TELEGRAM