أحدث المنشورات من Python для новичков (@pythonvideo) على Telegram

منشورات Python для новичков على Telegram

Python для новичков
Админ: @solkogan
Купить рекламу: https://telega.in/c/pythonvideo
6,417 مشترك
255 صورة
15 فيديو
آخر تحديث 27.02.2025 08:32

قنوات مشابهة

Python School
86,121 مشترك
Senior Python Developer
42,999 مشترك

أحدث المحتوى الذي تم مشاركته بواسطة Python для новичков على 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", ""))