Напишите функцию, которая принимает список чисел и возвращает второе наибольшее число. Если в списке меньше двух уникальных чисел, функция должна вернуть
None
.[10, 20, 4, 45, 99]
45
[5, 5, 5]
None
Решение задачи
def find_second_largest(numbers):
# Удаляем дубликаты и сортируем список в порядке убывания
unique_numbers = sorted(set(numbers), reverse=True)
# Если уникальных чисел меньше двух, возвращаем None
return unique_numbers[1] if len(unique_numbers) >= 2 else None
# Пример использования:
print(find_second_largest([10, 20, 4, 45, 99])) # Ожидаемый результат: 45
print(find_second_largest([5, 5, 5])) # Ожидаемый результат: None
Please open Telegram to view this post
VIEW IN TELEGRAM
• 7 продвинутых приемов pandas для науки о данных
• Красивые картинки на скатерти Улама
• Дообучаем языковую модель GPT2 с помощью Torch
• Увеличиваем размер выборки и прокрашиваем серые метрики: неочевидная ошибка при проведении А/B — тестов
• Разбей и властвуй: как создать кастомный токенизатор в SpaCy
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый Django-разработчик рано или поздно сталкивается с неожиданно «тяжелыми» запросами, способными превратить быстрое приложение в неповоротливого слона. Рассказываем, как с помощью django-pgactivity выследить и обезвредить такие запросы, прежде чем они создадут проблемы вашим пользователям.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте Python-скрипт, который проверяет доступность указанного веб-сервера и отправляет уведомление на почту, если сервер недоступен. Скрипт должен выполнять проверку каждые 5 минут и отправлять уведомление только один раз, если сервер падает, а затем повторно — только когда сервер снова станет доступен.
•
python monitor.py https://example.com
— проверяет доступность сервера по адресу https://example.com
, отправляет уведомление на почту, если сервер перестаёт отвечать, и повторно уведомляет при восстановлении работы.Решение задачи
import requests
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import sys
# Настройки для отправки уведомлений
SMTP_SERVER = 'smtp.example.com '
SMTP_PORT = 587
EMAIL = '[email protected] '
PASSWORD = 'your-password'
TO_EMAIL = '[email protected] '
# Функция для отправки уведомления
def send_notification(subject, message):
msg = MIMEMultipart()
msg['From'] = EMAIL
msg['To'] = TO_EMAIL
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(EMAIL, PASSWORD)
server.sendmail(EMAIL, TO_EMAIL, msg.as_string())
print(f"Уведомление отправлено: {subject}")
# Функция для проверки доступности сервера
def check_server(url):
try:
response = requests.get(url, timeout=5)
return response.status_code == 200
except requests.RequestException:
return False
# Основная функция мониторинга
def monitor(url):
server_is_down = False
while True:
is_up = check_server(url)
if is_up and server_is_down:
send_notification("Сервер восстановлен", f"Сервер {url} снова доступен.")
server_is_down = False
elif not is_up and not server_is_down:
send_notification("Сервер недоступен", f"Сервер {url} перестал отвечать.")
server_is_down = True
time.sleep(300) # Проверка каждые 5 минут
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Укажите URL сервера для мониторинга.")
sys.exit(1)
url = sys.argv[1]
monitor(url)
Please open Telegram to view this post
VIEW IN TELEGRAM
Python-разработчик (Junior/Middle)
Junior Python Developer
Computer Vision Engineer (Junior/Junior+)
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбираемся, как с помощью Python и библиотеки Pillow сделать Telegram-бота, который мгновенно превращает изображения в мемы или стикеры. Отличный инструмент для быстрой и забавной реакции в чатах.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
yield from
в Python и зачем он нужен?В Python
yield from
используется для делегирования генератору, позволяя передавать управление и данные другому генератору без явного цикла for
. Это делает код короче, читабельнее и эффективнее при работе с итераторами.def sub_generator():
yield "Первый"
yield "Второй"
def main_generator():
yield "Начало"
yield from sub_generator() # Делегируем выполнение
yield "Конец"
for item in main_generator():
print(item)
🗣️ yield from sub_generator() передаёт управление sub_generator(), избавляя от явного цикла.
Please open Telegram to view this post
VIEW IN TELEGRAM
SDET Python
•
Python, Selenium•
Уровень дохода не указан | от 1 года опытаQA Automation Engineer (Python)
•
Python, PyTest, SQL, NoSQL, Kafka, GitLab•
Уровень дохода не указан | от 1 года опытаPython developer
•
Python, JavaScript (React), pandas, sklearn, matplotlib, numpy, SQL, PostgreSQL, Cassandra, Git, GitLab•
Уровень дохода не указан | от 1 года опытаPlease open Telegram to view this post
VIEW IN TELEGRAM
В статье рассказывается о личном опыте создания проекта в программировании. Это не инструкция или руководство, а просто история новичка, который делится своей идеей, потому что подобного проекта он не нашел в сети.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте Python-приложение, которое принимает строку и определяет частоту встречаемости каждого символа в этой строке. Программа должна выводить результаты в консоль и сохранять их в файл
char_count.json
.•
python app.py count "Hello, World!"
— выводит количество каждого символа и сохраняет в char_count.json
.Решение задачи
import json
import sys
from collections import Counter
def count_chars(text):
count = Counter(text)
print(count)
with open('char_count.json', 'w') as f:
json.dump(count, f)
if __name__ == "__main__":
if len(sys.argv) > 1:
count_chars(sys.argv[1])
else:
print("Укажите строку для подсчета символов.")
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочешь полностью контролировать свои Docker-образы? Мы расскажем, как создать и настроить личный реестр контейнеров, идеально подходящий для твоих задач.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбираемся в основах диффузионных моделей: принципы работы, отличия от GAN и автоэнкодеров. В статье три подхода к изучению – теория, практика и продвинутый уровень.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Senior Backend Developer (Python)
•
Python, FastAPI, Django, PostgreSQL•
от 200 000 ₽ | 3–6 летSenior Python Backend Developer
•
Python, Django, FastAPI, PostgreSQL, Docker, Apache Kafka•
от 300 000 ₽ | 3–6 летPython QA Automation Developer
•
Python, Linux, HTTP, TCP, CI/CD•
до 5 000 $ | 1–3 годаPlease open Telegram to view this post
VIEW IN TELEGRAM
• «Снова упала?» Как поднять самооценку и зачем мы сравниваем себя с другими, даже если от этого больно
• Из учителя в QA: мой путь в IT
• Рынок дата-инженеров и прогноз на 2025
• Лидерами рождаются или становятся? Откуда берутся управленцы и лидеры в IT
• Работать или переработать: как победить в себе заядлого удаленщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Поговорим о создании пайплайна для обучения нейросетей, сражающихся на арене. Узнайте, как шаг за шагом построить процесс, и попробуйте обучить собственного чемпиона. Подробности и код на GitHub!
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторные выражения — это компактный способ создания итераторов в Python. Они похожи на списковые выражения (list comprehensions), но возвращают по одному элементу за раз, а не создают сразу весь список. Это делает их более эффективными по памяти, особенно для обработки больших объемов данных.
# Списковое выражение — создает весь список в памяти
squared_list = [x**2 for x in range(10)]
print(squared_list) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Генераторное выражение — возвращает по одному значению
squared_gen = (x**2 for x in range(10))
print(next(squared_gen)) # 0
print(next(squared_gen)) # 1
🗣 Генераторные выражения экономят память и могут использоваться для последовательной обработки данных, где полный список не нужен.
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет использование функции scatterplot() из seaborn для визуализации взаимосвязи числовых переменных. Рассказывается о параметрах настройки цвета, размера и стиля точек, что помогает в многомерном анализе данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет, как создать приложение для автоматического анализа онлайн-встреч. Используя API BotHub (Whisper-1 + Claude 3.5 Sonnet), вы научитесь извлекать ключевые идеи, распределять задачи и генерировать отчёты в формате PDF.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
После нескольких часов работы над сложным алгоритмом чувствуешь, что мозг просто отказывается работать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья открывает цикл о кастомизации Django админки, начиная с основ. Рассматриваются ключевые шаблоны и механизм их поиска, чтобы упростить понимание структуры и облегчить работу с админкой.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья посвящена новому free-threaded режиму в CPython 3.13, который открывает возможности параллельного выполнения потоков. Рассматриваются особенности его использования и влияние на производительность.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM