Dernières publications de Python для новичков (@pythonvideo) sur Telegram

Publications du canal Python для новичков

Python для новичков
Админ: @solkogan
Купить рекламу: https://telega.in/c/pythonvideo
6,417 abonnés
255 photos
15 vidéos
Dernière mise à jour 27.02.2025 08:32

Le dernier contenu partagé par Python для новичков sur Telegram


Для создания кейлоггера можно использовать библиотеку pynput.

Установите её с помощью команды

pip install pynput

from pynput import keyboard

def on_press(key):
try:
print(f'Key {key.char} pressed')
except AttributeError:
print(f'Special key {key} pressed')

def on_release(key):
print(f'Key {key} released')
if key == keyboard.Key.esc:
# Stop listener
return False

# Collect events until released
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()

🌲🎄🌲

https://habr.com/ru/articles/867964/

Игра Змейка на Pyqt5

## Основы юнит-тестирования

Юнит-тестирование — это метод проверки отдельных модулей (юнитов) кода на правильность их работы. В Python для юнит-тестирования часто используется модуль unittest, который является частью стандартной библиотеки.

### Основные компоненты

1. Тестовый случай (Test Case) — это класс, который наследует от unittest.TestCase. Он содержит методы, тестирующие отдельные функции или методы.

2. Тестовый набор (Test Suite) — это набор тестов, который может содержать тестовые случаи и другие тестовые наборы.

3. Тестовый запуск (Test Runner) — это компонент, который запускает тесты и показывает результаты.

### Основные методы unittest.TestCase

- assertEqual(a, b) — проверяет, что a равно b.
- assertNotEqual(a, b) — проверяет, что a не равно b.
- assertTrue(x) — проверяет, что x истинно.
- assertFalse(x) — проверяет, что x ложно.
- assertIsNone(x) — проверяет, что x равно None.
- assertIsNotNone(x) — проверяет, что x не равно None.

### Пример использования unittest

import unittest

def add(a, b):
return a + b

class TestMathFunctions(unittest.TestCase):

def test_add(self):
self.assertEqual(add(1, 2), 3)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(0, 0), 0)

def test_add_negative(self):
self.assertEqual(add(-1, -1), -2)

if __name__ == '__main__':
unittest.main()


### Запуск тестов

Сохраните тесты в файл, например, test_math.py, и запустите его с помощью команды:

python -m unittest test_math.py


## Использование setUp и tearDown

Методы setUp и tearDown позволяют подготавливать тестовую среду перед каждым тестом и очищать её после теста.

class TestMathFunctions(unittest.TestCase):

def setUp(self):
self.a = 10
self.b = 5

def tearDown(self):
pass # Здесь можно выполнить очистку, если это необходимо

def test_add(self):
self.assertEqual(add(self.a, self.b), 15)

def test_subtract(self):
self.assertEqual(self.a - self.b, 5)


## Параметризованные тесты с unittest

Для тестирования с несколькими наборами данных можно использовать subTest.

class TestMathFunctions(unittest.TestCase):

def test_add(self):
test_cases = [
(1, 2, 3),
(-1, 1, 0),
(0, 0, 0),
(-1, -1, -2)
]

for a, b, expected in test_cases:
with self.subTest(a=a, b=b):
self.assertEqual(add(a, b), expected)


## Использование библиотеки pytest

pytest — это более мощная и гибкая библиотека для тестирования в Python, которая поддерживает простую синтаксис и множество плагинов.

### Установка pytest

pip install pytest


### Пример теста с pytest

def add(a, b):
return a + b

def test_add():
assert add(1, 2) == 3
assert add(-1, 1) == 0
assert add(0, 0) == 0
assert add(-1, -1) == -2


### Запуск тестов с pytest

Запустите тесты, просто выполнив команду:

pytest


## Заключение

Юнит-тестирование — это важная часть разработки программного обеспечения, которая помогает находить и исправлять ошибки на ранних этапах. Используйте unittest для стандартного тестирования и pytest для более сложных сценариев. Не забывайте о хорошей практике написания тестов — они должны быть изолированными, понятными и быстро выполняемыми.

### Полезные ссылки

- [Документация по unittest](https://docs.python.org/3/library/unittest.html)

https://habr.com/ru/companies/timeweb/articles/858664/

🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 16 - 17 декабря в 19:00 мск.

О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота в формате консольного приложения.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Изучите рекомендации по продолжению обучения и развитию карьеры Backend-разработчика на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

🎁 Приятные бонусы - карта компетенций начинающего Python-разработчика и гайд «Как заговорить на сленге IT-специалистов» всем участникам интенсива!

https://habr.com/ru/articles/864000/

https://habr.com/ru/companies/ruvds/articles/863704/

import os
import wave
import json
from vosk import Model, KaldiRecognizer

# Загрузка модели
if not os.path.exists("model"):
print("Пожалуйста, скачайте модель с https://alphacephei.com/vosk/models и распакуйте её в папку 'model'")
exit(1)

model = Model("model")

# Загрузка аудиофайла
audio_file = "path/to/your/audiofile.wav"
wf = wave.open(audio_file, "rb")

# Проверка формата аудиофайла
if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getframerate() != 16000:
print("Аудиофайл должен быть моно, PCM 16-бит, 16000 Гц")
exit(1)

# Инициализация распознавателя
rec = KaldiRecognizer(model, wf.getframerate())

# Распознавание речи
while True:
data = wf.readframes(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
result = rec.Result()
result_dict = json.loads(result)
print("Vosk понял: " + result_dict.get("text", ""))
else:
partial_result = rec.PartialResult()
partial_result_dict = json.loads(partial_result)
print("Vosk частично понял: " + partial_result_dict.get("partial", ""))

# Завершение распознавания
final_result = rec.FinalResult()
final_result_dict = json.loads(final_result)
print("Vosk понял: " + final_result_dict.get("text", ""))