Проверка заклинаний в Python – это функция программного обеспечения, которая проверяет ошибки в тексте. Функции проверки заклинаний часто встраиваются в программное обеспечение или услуги, такие как процессор Word, клиент электронной почты, электронный словарь или поисковая система.
Создание проверки орфографии в Python
Давайте начнем с создания нашего инструмента проверки орфографии!
1. Импорт модулей
Проверка орфографии в Python
В статье напишем код небольшой программы для проверки орфографии при помощи языка программирования Python.
Установка библиотеки PySpellChecker
PySpellChecker – это библиотека Python, которая позволяет проверять орфографию на различных языках, включая русский. Она использует словарь слов Aspell для проверки правописания и поддерживает проверку орфографии.
Для установки библиотеки нужно перейти в терминал, или же командную строку, прописать pip install pyspellchecker , нажать Enter и ждать установки. После инсталляции модуля мы импортируем из него класс SpellChecker :
from spellchecker import SpellChecker
Проверка правописания слова
Инициализируем класс SpellChecker и укажем русский язык:
from spellchecker import SpellChecker
Дадим пользователю возможность ввести проверяемое слово:
from spellchecker import SpellChecker
word = input(«Введите слово для проверки орфографии: «)
Зададим условие, в котором при помощи метода correction() проверим правильность написания слова. Если слово написано верно, то выведем соответствующее сообщение в консоль, если нет, то укажем на ошибку и выведем возможные варианты правильного написания слова:
from spellchecker import SpellChecker
word = input(«Введите слово для проверки орфографии: «)
if spell.correction(word) == word:
print(«Слово написано верно!»)
else:
print(«Ошибка в написании слова»)
print(«Возможные варианты:»)
print(spell.candidates(word))
# Вывод:
# Ошибка в написании слова
# Возможные варианты:
#
Проверка предложения на орфографические ошибки
Создадим экземпляр класса SpellChecker , после чего в переменную text сохраним текст с орфографической ошибкой:
from spellchecker import SpellChecker
spell = SpellChecker(language=’ru’)
text = ‘Эта фраза содержит орфографическую ошибку’
Далее при помощи метода unknown() извлечём слова, в которых предположительно находится ошибка и сохраним их в mistakes:
from spellchecker import SpellChecker
spell = SpellChecker(language=’ru’)
text = ‘Эта фраза содержит орфографическую ошибку’
Создадим цикл, в котором пройдёмся по предположительно неверно написанным словам. Внутри цикла выведем эти слова, и возможное правильное их написание:
from spellchecker import SpellChecker
spell = SpellChecker(language=’ru’)
text = ‘Это предлжение содержт ошибку’
for mistake in mistakes:
print(f’Ошибка: «» nПравильное написание: ‘)
# Вывод:
# Ошибка: «предлжение»
# Правильное написание: предложение
# Ошибка: «содержт»
# Правильное написание: содержит
В ходе статьи мы с Вами научились проверять текст на наличие орфографических ошибок. Надеюсь Вам понравилась статья, желаю удачи и успехов!
Источник: dzen.ru
№35 Инструкция assert / для начинающих
Инструкции assert в Python — это булевы выражения, которые проверяют, является ли условие истинным ( True ). Они определяют факты (утверждения) в программе. Assertion — это проверка, которую можно включить, а затем выключить, завершив тестирование программы.
Возьмем простой пример функции деления. Можно быть уверенным в том, что делитель не должен быть нолем. Это и указывается при тестировании. Разберем этот пример позже.
Что такое Assertion (утверждение)
Assertions (утверждения) — это инструкции, которые «утверждают» определенный кейс в программе. В Python они выступают булевыми выражениями, которые проверяют, является ли условие истинным или ложным. Если оно истинно, то программа ничего не делает и переходит к выполнению следующей строчки кода.
Но если оно ложно, то программа останавливается и возвращает ошибку.
Следующий синтаксис — это базовая структура инструкций утверждения в Python.
assert condition
Если же нужно добавить сообщение для вывода при ложном условии, то синтаксис будет таким.
assert condition, message
Это сообщение позволит лучше понять, почему код не сработал.
Пример assert
Если нужно симулировать или выполнить отладку кода, чтобы узнать, что именно происходит на определенном этапе, то «утверждения» в Python отлично для этого подходят.
Именно инструмент отладки останавливает программу, как только возникает какая-то ошибка. Он также показывает, где именно она произошла.
- Инструкция assert принимает выражение и необязательное сообщение;
- Она используется для проверки типов, значений аргумента и вывода функции;
- А также для отладки, поскольку приостанавливает программу в случае ошибки.
Вот пример работы утверждений в Python.
def avg(ranks):
assert len(ranks) != 0
return round(sum(ranks)/len(ranks), 2)
ranks = [62, 65, 75]
print(«Среднее значение:», avg(ranks))
В этом примере нужно, чтобы пользователь не оставлял параметры пустыми. Если этого не сделать, вернется ошибка Assertion Error . Вот пример вывода:
Среднее значение: 67.33
В этом случае параметры были переданы, поэтому функция вернула нужный результат.
Теперь попробуем ничего не передавать.
def avg(ranks):
assert len(ranks) != 0
return round(sum(ranks)/len(ranks), 2)
ranks = []
print(«Среднее значение:», avg(ranks))
Длина массива ranks оказалась 0, и python вернул ошибку Assertion Error .
Traceback (most recent call last): File «C:/Users/asd/AppData/Local/Programs/Python/Python38/wb.py», line 6, in print(«Среднее значение:», avg(ranks)) File «C:/Users/asd/AppData/Local/Programs/Python/Python38/wb.py», line 2, in avg assert len(ranks) != 0 AssertionError
Исключения Assertion Error можно перехватывать и обрабатывать как и любые другие исключения с помощью try-except. Но если их обработать неправильно, то программа остановится и вернет traceback .
Однако в примере выше она не возвращает ошибку с нужным сообщением. Ее можно написать самостоятельно. Вот как это делается.
def avg(ranks):
assert len(ranks) != 0, ‘Список ranks не должен быть пустым’
return round(sum(ranks)/len(ranks), 2)
ranks = []
print(«Среднее значение:», avg(ranks))
Вторым аргументом к assert в примере выше было передано сообщение, которое позже появится в выводе.
Traceback (most recent call last): File «C:/Users/asd/AppData/Local/Programs/Python/Python38/wb.py», line 6, in print(«Среднее значение:», avg(ranks)) File «C:/Users/asd/AppData/Local/Programs/Python/Python38/wb.py», line 2, in avg assert len(ranks) != 0, ‘Список ranks не должен быть пустым’ AssertionError: Список ranks не должен быть пустым
Assert с сообщением об ошибки
Рассмотрим еще один пример с делением на 0.
def divide(x, y):
assert y != 0 , ‘Нельзя делить на 0’
return round(x/y, 2)
z = divide(21,3)
print(z)
a = divide(21,0)
print(a)
В этом примере, если делителем будет ноль, то assert вернет сообщение с ошибкой. Посмотрим на вывод.
7.0 Traceback (most recent call last): File «C:/Users/asd/AppData/Local/Programs/Python/Python38/wb.py», line 8, in a = divide(21,0) File «C:/Users/asd/AppData/Local/Programs/Python/Python38/wb.py», line 2, in divide assert y != 0 , ‘Нельзя делить на 0’ AssertionError: Нельзя делить на 0
На третьей сверху строчке написана сама инструкция assert . Именно здесь проверяется, не является ли переменная y равной 0. Если она больше 0, то условие истинно, и код возвращает требуемый результат.
Но если вызвать метод division() со вторым аргументом 0, то условие assert будет ложным.
По этой причине и возникает исключение Assertion Error . Именно оно возвращает ошибку с сообщением «Нельзя делить на 0».
Методы assert
assertEqual(x, y) | x == y | |
assertNotEqual(x, y) | x != y | |
assertTrue(x) | bool(x) равно True | |
assertFalse(x) | bool(x) равно False | |
assertIs(x, y) | x это y | 3.1 |
assertIsNot(x, y) | x это не y | 3.1 |
assertIsNone(x) | x это None | 3.1 |
assertIsNotNone(x) | x это не None | 3.1 |
assertIn(x, y) | x в y | 3.1 |
assertNotIn(x, y) | x не в y | 3.1 |
assertIsInstance(x, y) | isinstance(x, y) | 3.2 |
assertNotIsInstance(x,y) | не isinstance(x, y) | 3.2 |
Как проверить, что функция возвращает исключение
Можно использовать TestCase.assertRaises (или TestCase.failUnlessRaises ) из модуля unittest .
import unittest def broken_function():
raise Exception(‘Это ошибка’) class MyTestCase(unittest.TestCase):
def test(self):
with self.assertRaises(Exception) as context:
broken_function()
self.assertTrue(‘Это ошибка’ in str(context.exception)) if __name__ == ‘__main__’:
unittest.main()
. ———————————————————————- Ran 1 test in 0.051s OK
Распространенные ошибки
Есть два важных момента касательно утверждений в Python, о которых нужно помнить.
- Не стоит использовать assert для валидации данных, ведь это приводит к появлению проблем с безопасностью и багов.
- Важно не писать такие утверждения, которые всегда будут истинными.
Ключевые моменты assert в Python
- Утверждение (Assertion) — это условие или булево выражение, которое должно быть истинным.
- Инструкция assert принимает выражение и необязательное сообщение.
- Инструкция assert используется для проверки типов, значений аргументов и вывода функций.
- Это также инструмент для отладки, ведь он останавливает программу при появлении ошибки.
- В первую очередь утверждения используются для уведомления разработчиков о неотслеживаемых ошибках. Они не должны сообщать об условия ошибок, таких как «файл не был найден», где пользователь может попытаться исправиться и повторить действия.
- Утверждения — это внутренняя проверка для программы. Они работают за счет объявления невозможных условий в коде. Если эти условия не проходят, значит имеется баг.
Источник: pythonru.com