10 проектов Python для оттачивания навыков — темы подобраны случайным образом
Python, универсальный и широко используемый язык программирования, предоставляет разработчикам уникальное сочетание мощности и простоты. В этой статье мы рассмотрим десять программ Python, которые демонстрируют возможности языка и то, как Python упрощает написание кода сложных задач.
Python можно скачать по следующей ссылке: https://www.python.org/downloads/
Вы можете просмотреть документацию для получения полезных руководств по Python: https://www.python.org/doc/
Программа “Анализатор настроений”
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
def analyze_sentiment(text):
sia = SentimentIntensityAnalyzer()
sentiment_scores = sia.polarity_scores(text)
if sentiment_scores['compound'] >= 0.05:
return "Positive"
elif sentiment_scores['compound'] <= -0.05:
return "Negative"
else:
return "Neutral"
def analyze_sentiment_batch(texts):
sia = SentimentIntensityAnalyzer()
sentiments = []
for text in texts:
sentiment_scores = sia.polarity_scores(text)
if sentiment_scores['compound'] >= 0.05:
sentiments.append("Positive")
elif sentiment_scores['compound'] <= -0.05:
sentiments.append("Negative")
else:
sentiments.append("Neutral")
return sentiments
def get_sentiment_score(text):
sia = SentimentIntensityAnalyzer()
sentiment_scores = sia.polarity_scores(text)
return sentiment_scores['compound']
text = "I really enjoyed the movie. It had a great storyline and amazing acting!"
sentiment = analyze_sentiment(text)
print("Sentiment:", sentiment)
texts = ["I love this product!", "The service was terrible.", "It's an average experience."]
sentiments_batch = analyze_sentiment_batch(texts)
print("Sentiments (batch):", sentiments_batch)
score = get_sentiment_score(text)
print("Sentiment score:", score)
В этой программе у нас есть следующие функции:
analyze_sentiment_batch(texts)
: эта функция принимает список текстов и анализирует тональность каждого текста с помощью Анализатора интенсивности тональности. Он возвращает список настроений, соответствующих каждому входному тексту.get_sentiment_score(text)
: эта функция вычисляет оценку тональности (составную оценку) заданного текста с помощью Анализатора интенсивности тональности и возвращает оценку.
Теперь вы можете анализировать тональность отдельных текстов, обрабатывать пакет текстов или получать оценки тональности. Не стесняйтесь адаптировать и использовать эти функции в соответствии с вашими конкретными требованиями.
Программа отслеживания влиятельных лиц в социальных сетях
import requests
import json
def track_influencer(username):
response = requests.get(f"https://api.example.com/influencers/{username}")
data = json.loads(response.text)
# Process and analyze the data here
return data
def get_follower_count(data):
return data['follower_count']
def get_engagement_rate(data):
total_likes = data['total_likes']
total_comments = data['total_comments']
follower_count = data['follower_count']
engagement_rate = ((total_likes + total_comments) / follower_count) * 100
return engagement_rate
def get_top_posts(data, count=5):
posts = data['posts']
sorted_posts = sorted(posts, key=lambda p: p['likes'], reverse=True)
top_posts = sorted_posts[:count]
return top_posts
username = "john_doe"
influencer_data = track_influencer(username)
follower_count = get_follower_count(influencer_data)
print("Follower count:", follower_count)
engagement_rate = get_engagement_rate(influencer_data)
print("Engagement rate:", engagement_rate)
top_posts = get_top_posts(influencer_data, count=3)
print("Top posts:")
for post in top_posts:
print("Post:", post['content'])
print("Likes:", post['likes'])
print("Comments:", post['comments'])
print("-----")
В этой программе у нас есть следующие функции:
get_follower_count(data)
: эта функция принимает данные о влиятельных лицах в качестве входных данных и возвращает количество подписчиков.get_engagement_rate(data)
: эта функция вычисляет уровень вовлеченности влиятельного лица на основе общего количества лайков, общего количества комментариев и количества подписчиков.get_top_posts(data, count=5)
: эта функция извлекает самые популярные сообщения из данных влиятельных лиц. Она сортирует посты по количеству лайков в порядке убывания и возвращает указанное количество топовых постов.
Теперь вы можете отслеживать влиятельных лиц, получать количество их подписчиков, рассчитывать уровень вовлеченности и получать их самые популярные публикации. Настройте параметр count
в get_top_posts
, чтобы получить другое количество популярных сообщений. При необходимости адаптируйте эти функции для анализа и обработки данных влиятельных лиц в вашем приложении.
Программа системы обнаружения мошенничества
import pandas as pd
from sklearn.ensemble import IsolationForest
def detect_fraud(data):
# Preprocess the data and extract relevant features
processed_data = preprocess_data(data)
# Train the fraud detection model
model = IsolationForest()
model.fit(processed_data)
# Make predictions
predictions = model.predict(processed_data)
return predictions
def preprocess_data(data):
# Implement your data preprocessing logic here
processed_data = data.copy()
# Perform feature engineering, scaling, or other transformations
return processed_data
def analyze_predictions(data, predictions):
fraud_indices = [index for index, prediction in enumerate(predictions) if prediction == -1]
fraud_records = data.iloc[fraud_indices]
return fraud_records
data = pd.read_csv("transaction_data.csv")
fraud_predictions = detect_fraud(data)
fraud_records = analyze_predictions(data, fraud_predictions)
print("Fraud Records:")
print(fraud_records)
В этой программе у нас есть следующие функции:
preprocess_data(data)
: эта функция отвечает за предварительную обработку входных данных перед обучением модели обнаружения мошенничества. Вы можете реализовать разработку функций, масштабирование или другие преобразования, характерные для ваших данных.analyze_predictions(data, predictions)
: Эта функция использует исходные данные и прогнозы, сделанные моделью обнаружения мошенничества. Она идентифицирует индексы записей, спрогнозированных как мошенничество, и извлекает соответствующие записи о мошенничестве из данных.
Теперь вы можете предварительно обрабатывать данные, обучать модель обнаружения мошенничества с помощью алгоритма Isolation Forest, делать прогнозы на основе данных и анализировать записи о мошенничестве. Адаптируйте и настройте эти функции в соответствии с вашими конкретными требованиями и характеристиками данных.
Интеллектуальный помощник по электронной почте
from googleapiclient.discovery import build
def process_email(email):
# Implement your email processing logic here
processed_email = preprocess_email(email)
# Return suggested replies or any other processed information
return processed_email
def fetch_emails(label):
# Authenticate and connect to the Gmail API
service = build('gmail', 'v1', credentials=credentials)
# Fetch emails with the specified label
results = service.users().messages().list(userId='me', labelIds=[label]).execute()
messages = results.get('messages', [])
emails = []
for message in messages:
email = service.users().messages().get(userId='me', id=message['id']).execute()
emails.append(email)
return emails
def send_reply(email, reply_text):
# Authenticate and connect to the Gmail API
service = build('gmail', 'v1', credentials=credentials)
# Create a reply message
reply = {
'threadId': email['threadId'],
'message': {
'raw': create_reply_message(email, reply_text)
}
}
# Send the reply
service.users().messages().send(userId='me', body=reply).execute()
def create_reply_message(email, reply_text):
# Implement your reply message creation logic here
# You can use the email and reply_text to customize the reply
# Return the raw message data in RFC 2822 format
# See Gmail API documentation for message formatting details
reply_message = {
'From': email['to'],
'To': email['from'],
'Subject': f"Re: {email['subject']}",
'In-Reply-To': email['messageId'],
'References': email['messageId'],
'Content-Type': 'text/plain; charset=utf-8',
'Content-Transfer-Encoding': '7bit',
'Date': email['date'],
'Message-ID': email['messageId'],
'X-Mailer': 'python',
'Body': reply_text
}
raw_message = create_raw_message(reply_message)
return raw_message
def create_raw_message(message):
# Implement your raw message creation logic here
# Convert the message dictionary to a raw message string
# See Gmail API documentation for message formatting details
raw_message = ""
# Build the raw message string based on the message dictionary
return raw_message
# Set up your Gmail API credentials and authenticate
label = "inbox"
emails = fetch_emails(label)
for email in emails:
processed_email = process_email(email)
print(processed_email)
# Example: Send a reply
reply_text = "Thank you for your email. We will get back to you soon."
send_reply(email, reply_text)
В этой программе у нас есть следующие функции:
fetch_emails(label)
: эта функция извлекает электронные письма с указанным ярлыком с помощью Gmail API. Она проходит аутентификацию с помощью Gmail API и возвращает список объектов электронной почты.send_reply(email, reply_text)
: эта функция отправляет ответ на указанное электронное письмо с помощью Gmail API. Она создает ответное сообщение на основе исходного электронного письма и предоставленного текста ответа.create_reply_message(email, reply_text)
: Эта функция создает ответное сообщение в формате RFC 2822. Она использует исходное электронное письмо и текст ответа для настройки ответа. Вы можете изменить эту функцию, чтобы включить дополнительные заголовки электронной почты или дополнительно настроить ответное сообщение.create_raw_message(message)
: эта функция преобразует словарь сообщений в необработанную строку сообщения в формате RFC 2822. Вы можете настроить эту функцию для создания необработанного сообщения в соответствии с вашими конкретными требованиями.
Теперь вы можете получать электронные письма, обрабатывать их, отправлять ответы и настраивать формат ответного сообщения. При необходимости адаптируйте и расширяйте эти функции для создания более интеллектуального помощника по работе с электронной почтой, соответствующего требованиям вашего приложения.
Программа для работы с документами
from transformers import pipeline
def summarize_text(text):
summarizer = pipeline("summarization")
summary = summarizer(text, max_length=150, min_length=30, do_sample=False)
return summary[0]['summary_text']
def analyze_sentiment(text):
sentiment_analyzer = pipeline("sentiment-analysis")
sentiment = sentiment_analyzer(text)[0]['label']
return sentiment
def extract_keywords(text):
keyword_extractor = pipeline("text2text-generation", model="t5-base", tokenizer="t5-base", config={"max_length": 100})
prompt = "extract_keywords: " + text
result = keyword_extractor(prompt, max_length=100, do_sample=True, top_k=10, top_p=0.95)
keywords = result[0]['generated_text'].replace("extract_keywords:", "").strip().split(", ")
return keywords
def analyze_document(document):
summary = summarize_text(document)
sentiment = analyze_sentiment(document)
keywords = extract_keywords(document)
analysis = {
'summary': summary,
'sentiment': sentiment,
'keywords': keywords
}
return analysis
document = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce aliquam lorem at ullamcorper ullamcorper. Pellentesque sed magna sed risus consequat luctus. Quisque condimentum enim velit, at aliquet mi interdum eget. Donec sed ligula sed enim lobortis laoreet. Sed sollicitudin rhoncus urna sed feugiat. Proin vestibulum ligula sit amet orci dictum, nec rhoncus nisl congue. Duis quis enim efficitur, cursus erat a, venenatis purus. In varius lacinia nisl ac rhoncus. Quisque finibus, odio at sollicitudin laoreet, tellus mi consequat magna, vitae rhoncus augue quam eu metus. Proin sed congue turpis. Aenean id lacinia ex, id tristique urna. Suspendisse finibus purus id metus commodo, sed iaculis nulla pellentesque. Etiam auctor ipsum sit amet odio venenatis dignissim. Sed fermentum justo vitae venenatis aliquam."
analysis = analyze_document(document)
print("Summary:", analysis['summary'])
print("Sentiment:", analysis['sentiment'])
print("Keywords:", analysis['keywords'])
В этой программе у нас есть следующие функции:
analyze_sentiment(text)
: эта функция анализирует тональность документа с помощью модели анализа тональности. Она возвращает метку настроения, например «положительное», «отрицательное» или «нейтральное».extract_keywords(text)
: эта функция извлекает ключевые слова из документа, используя модель генерации текста. Она генерирует ключевые слова на основе предоставленного текста и возвращает список ключевых слов.analyze_document(document)
: эта функция объединяет функции суммирования текста, анализа тональности и извлечения ключевых слов для всестороннего анализа документа. Она возвращает словарь анализа со сводкой, тональностью и ключевыми словами.
Теперь вы можете резюмировать документ, анализировать его тональность и извлекать ключевые слова. Настройте и улучшите эти функции в соответствии с вашими конкретными требованиями, чтобы создать более мощное и интеллектуальное средство для работы с документами.
Программа «Предсказатель фондового рынка»
import yfinance as yf
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
def predict_stock(symbol, start_date, end_date):
# Fetch historical stock data from Yahoo Finance
stock_data = yf.download(symbol, start=start_date, end=end_date)
# Preprocess the stock data and extract relevant features
processed_data = preprocess_stock_data(stock_data)
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(processed_data['features'], processed_data['target'], test_size=0.2)
# Train a linear regression model
model = LinearRegression()
model.fit(X_train, y_train)
# Make predictions on the testing set
predictions = model.predict(X_test)
# Calculate the root mean squared error (RMSE)
rmse = np.sqrt(mean_squared_error(y_test, predictions))
return rmse
def preprocess_stock_data(data):
# Implement your stock data preprocessing logic here
processed_data = {
'features': None,
'target': None
}
# Perform feature extraction, scaling, or other transformations
return processed_data
def analyze_stock(symbol, start_date, end_date):
rmse = predict_stock(symbol, start_date, end_date)
analysis = {
'symbol': symbol,
'start_date': start_date,
'end_date': end_date,
'rmse': rmse
}
return analysis
symbol = 'AAPL'
start_date = '2022-01-01'
end_date = '2022-12-31'
analysis = analyze_stock(symbol, start_date, end_date)
print("Symbol:", analysis['symbol'])
print("Start Date:", analysis['start_date'])
print("End Date:", analysis['end_date'])
print("RMSE:", analysis['rmse'])
В этой программе у нас есть следующие функции:
predict_stock(symbol, start_date, end_date)
: эта функция извлекает исторические данные об акциях из Yahoo Finance, предварительно обрабатывает данные, обучает модель линейной регрессии и делает прогнозы на тестовом наборе. Она вычисляет среднеквадратичную ошибку (RMSE) в качестве показателя оценки.preprocess_stock_data(data)
: Эта функция выполняет предварительную обработку данных запаса, например извлечение признаков, масштабирование или другие преобразования. Она возвращает словарь, содержащий обработанные функции и целевые данные.analyze_stock(symbol, start_date, end_date)
: эта функция управляет процессом прогнозирования фондового рынка. Она вызывает функциюpredict_stock
для получения значения RMSE и создает словарь анализа с символом, датой начала, датой окончания и RMSE.
Теперь вы можете прогнозировать цены на акции, оценивать эффективность с помощью метрики RMSE и анализировать тенденции фондового рынка. Настраивайте и расширяйте эти функции в соответствии с вашими конкретными требованиями, чтобы создать более мощный предсказатель фондового рынка.
Интеллектуальная программа форматирования кода
import black
import pylint.lint
def format_code(code):
# Use the Black code formatter to format the code
formatted_code = black.format_str(code, mode=black.FileMode())
return formatted_code
def lint_code(code):
# Run pylint to perform static code analysis
lint_results = pylint.lint.Run([code], exit=False)
return lint_results
def optimize_code(code):
# Implement your code optimization logic here
optimized_code = code
# Apply optimization techniques to improve code performance or efficiency
return optimized_code
def analyze_code(code):
formatted_code = format_code(code)
lint_results = lint_code(formatted_code)
optimized_code = optimize_code(formatted_code)
analysis = {
'formatted_code': formatted_code,
'lint_results': lint_results,
'optimized_code': optimized_code
}
return analysis
code = """
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
"""
analysis = analyze_code(code)
print("Formatted Code:")
print(analysis['formatted_code'])
print("Lint Results:")
print(analysis['lint_results'])
print("Optimized Code:")
print(analysis['optimized_code'])
В этой программе у нас есть следующие функции:
lint_code(code)
: эта функция запускает линтер pylint в коде для выполнения статического анализа кода. Она возвращает результаты lint, такие как предупреждения или ошибки, обнаруженные pylint.optimize_code(code)
: эта функция реализует логику оптимизации кода для повышения производительности или эффективности кода. Вы можете применять различные методы оптимизации, основанные на ваших конкретных требованиях.analyze_code(code)
: эта функция управляет процессом анализа кода. Она вызывает функциюformat_code
для форматирования кода, функциюlint_code
для выполнения статического анализа кода и функциюoptimize_code
для оптимизации кода. Она создает словарь анализа с отформатированным кодом, результатами анализа и оптимизированным кодом.
Теперь вы можете форматировать код с помощью средства форматирования Black, выполнять статический анализ кода с помощью pylint и оптимизировать код. Настраивайте и расширяйте эти функции в соответствии с вашими конкретными требованиями, чтобы создать более мощный интеллектуальный форматировщик и анализатор кода.
Интеллектуальный чат-бот
import nltk
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
nltk.download('punkt')
def preprocess_text(text):
# Tokenize the text into sentences
sentences = nltk.sent_tokenize(text)
return sentences
def generate_response(user_input, sentences):
# Add the user input to the list of sentences
sentences.append(user_input)
# Preprocess the sentences and convert them into TF-IDF vectors
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(sentences)
# Calculate the cosine similarity between the user input and all other sentences
similarity_scores = cosine_similarity(tfidf_matrix[-1], tfidf_matrix[:-1]).flatten()
# Find the most similar sentence
most_similar_sentence_index = similarity_scores.argmax()
# Generate the response based on the most similar sentence
response = sentences[most_similar_sentence_index]
return response
def chat():
print("Chatbot: Hello! How can I assist you today?")
print("Chatbot: Type 'exit' to end the conversation.")
# Define a list of predefined sentences for the chatbot
predefined_sentences = [
"Hello",
"How are you?",
"What is your name?",
"Tell me a joke",
"What is the meaning of life?",
"Who is your creator?"
]
# Preprocess the predefined sentences
sentences = preprocess_text(" ".join(predefined_sentences))
# Start the conversation loop
while True:
user_input = input("User: ")
if user_input.lower() == "exit":
print("Chatbot: Goodbye!")
break
response = generate_response(user_input, sentences)
print("Chatbot:", response)
chat()
В этой программе у нас есть следующие функции:
preprocess_text(text)
: эта функция разбивает текст на предложения, используя функциюsent_tokenize
из библиотекиnltk
. Возвращает список предложений.generate_response(user_input, sentences)
: Эта функция добавляет пользовательский ввод в список предложений, предварительно обрабатывает предложения, преобразует их в векторы TF-IDF и вычисляет косинусное сходство между пользовательским вводом и другими предложениями. Она определяет наиболее похожее предложение и генерирует ответ на основе этого предложения.chat()
: эта функция реализует цикл общения чат-бота. Она запрашивает у пользователя ввод, генерирует ответ с помощью функцииgenerate_response
и выводит ответ чат-бота. Беседа продолжается до тех пор, пока пользователь не введет «exit», чтобы завершить беседу.
Теперь вы можете общаться с интеллектуальным чат-ботом, который отвечает на основе наиболее похожего предопределенного предложения. Настройте и расширьте предопределенные предложения и улучшите функциональность чат-бота, чтобы создать более мощного и интерактивного диалогового агента.
Программа “Интеллектуальный анализатор данных”
import pandas as pd
import numpy as np
def load_data(file_path):
# Load the data from a file using pandas
data = pd.read_csv(file_path)
return data
def analyze_data(data):
analysis = {
'summary': data.describe(),
'missing_values': data.isnull().sum(),
'correlation_matrix': data.corr()
}
return analysis
def visualize_data(data):
# Implement your data visualization logic here
# Use libraries like matplotlib or seaborn to create visualizations
pass
def process_data(data):
# Implement your data processing logic here
# Apply transformations, feature engineering, or data cleaning techniques
processed_data = data
# Example: processed_data = data.dropna()
return processed_data
file_path = 'data.csv'
data = load_data(file_path)
analysis = analyze_data(data)
visualize_data(data)
processed_data = process_data(data)
print("Summary:")
print(analysis['summary'])
print("Missing Values:")
print(analysis['missing_values'])
print("Correlation Matrix:")
print(analysis['correlation_matrix'])
В этой программе у нас есть следующие функции:
visualize_data(data)
: эта функция является заполнителем для вашей логики визуализации данных. Вы можете использовать популярные библиотеки, такие как matplotlib или seaborn, для создания визуализаций, таких как гистограммы, диаграммы рассеяния или тепловые карты на основе данных. Настройте эту функцию в соответствии с вашими конкретными требованиями к визуализации.process_data(data)
: эта функция является заполнителем для вашей логики обработки данных. Вы можете применять различные методы обработки данных, такие как очистка, разработка функций или преобразования, в зависимости от ваших конкретных требований. Приведенный пример просто возвращает входные данные как есть. Измените эту функцию, чтобы реализовать желаемые операции обработки данных.
Программа загружает данные из файла с помощью функции load_data
, выполняет анализ данных с помощью функции analyze_data
и визуализирует данные с помощью функции visualize_data
(будет реализована). Она также демонстрирует функцию process_data
в качестве заполнителя для вашей собственной логики обработки данных. Сводная статистика, пропущенные значения и матрица корреляции выводятся как часть результатов анализа.
Теперь вы можете загружать и анализировать данные, визуализировать их и выполнять операции по обработке данных. Настраивайте и расширяйте эти функции в соответствии с вашими конкретными требованиями, чтобы создать более мощный и интеллектуальный анализатор данных.
Программа “Интеллектуальный менеджер паролей”
import hashlib
import secrets
def generate_password(length=12):
# Generate a random password with the specified length
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_-+=[]{}<>,."
password = ''.join(secrets.choice(alphabet) for _ in range(length))
return password
def hash_password(password):
# Hash the password using the SHA-256 algorithm
hashed_password = hashlib.sha256(password.encode()).hexdigest()
return hashed_password
def store_password(service, username, password):
# Store the service, username, and hashed password in a secure manner
# This function can be implemented to store the information in a secure database or file
print(f"Password for {service} has been stored securely.")
def retrieve_password(service, username):
# Retrieve the stored password for the given service and username
# This function can be implemented to fetch the information from a secure database or file
print(f"Retrieved password for {service} and username {username}.")
def delete_password(service, username):
# Delete the stored password for the given service and username
# This function can be implemented to remove the information from a secure database or file
print(f"Deleted password for {service} and username {username}.")
service = "example.com"
username = "user123"
# Generate a new password
new_password = generate_password()
hashed_password = hash_password(new_password)
# Store the password
store_password(service, username, hashed_password)
# Retrieve the password
retrieve_password(service, username)
# Delete the password
delete_password(service, username)
В этой программе у нас есть следующие функции:
generate_password(length=12)
: Эта функция генерирует случайный пароль указанной длины. Она использует модульsecrets
для генерации безопасных случайных выборов из заданного алфавита.hash_password(password)
: эта функция хеширует предоставленный пароль с помощью алгоритма SHA-256. Она преобразует строку пароля в байты, хеширует ее и возвращает шестнадцатеричное представление хэша.store_password(service, username, password)
: Эта функция имитирует безопасное хранение пароля. Вы можете настроить эту функцию для безопасного хранения пароля, например, используя защищенную базу данных или зашифрованный файл.retrieve_password(service, username)
: Эта функция имитирует получение сохраненного пароля для данной службы и имени пользователя. Вы можете настроить эту функцию для извлечения пароля из безопасного механизма хранения.delete_password(service, username)
: Эта функция имитирует удаление сохраненного пароля для данного сервиса и имени пользователя. Вы можете настроить эту функцию, чтобы удалить пароль из механизма безопасного хранения.
Программа демонстрирует создание нового пароля, его хеширование, безопасное хранение хешированного пароля, извлечение пароля и удаление пароля. Вы можете настроить функции хранения, извлечения и удаления в соответствии с вашими конкретными требованиями к безопасному управлению паролями.
Настройте и расширьте эти функции в соответствии с вашими конкретными требованиями, чтобы создать более мощный и интеллектуальный менеджер паролей.