В калькуляторе реализовать запрет ввод символов кроме тех, что есть в калкьуляторе

Реализую калькулятор на Django. В нем будут кнопки, которые будут добавлять свой определенный символ в выражение, а также возможность пользователю самому написать выражение в строку. Подскажите, как мне реализовать проверку на то, ввел ли пользователь символы, которые запрещены? Я планировал сделать set, в котором содержатся все цифры, а также все возможные знаки (+ - * / sqrt ^ и др.). Как мне сделать так, чтобы программа проверяла выражение и если она находила символ, которого нету в сете, она выдавала ошибку? Слышал что то про проверку нахождения подмножества во множестве, но это же помоему не то, что мне нужно?

Ну, хотя сложно по описанию понять, но могу примерно объяснить, как такое делается.

В Python есть оператор членства in, позволяющий проверить наличие переменной в списке/кортеже/сете/строке и т. п. C помощью него можно реализовать проверку наличия каки-либо других символов, кроме допустимых, в выражении, переданном калькулятору. Пример:

vyr_good = '1-5+3'
vyr_bad = '1+2/b'
s = '0123456789+-*/'
validate = lambda vyr: all([i in s for i in vyr])
print(validate(vyr_good))                            # Вывод: True
print(validate(vyr_bad))                             # Вывод: False

s — множество допустимых символов. vyr_good и vyr_bad соответственно, допустимое и недопустимое выражения. Функция all проверяет, что все значения в переданном ей списке равны True. При помощи спискового включения мы создаем список, в котором все элементы будут равны True только если каждый член выражения будет в строке-валидаторе. Эта функция для удобства заключена в лямбду.

Вернуться на верх