from math import *
def solution_handler(self, input):
while re.search(r'(?<!\.)(\d+)(?!\.)(\d*)', input):
rx = re.search(r'(?<!\.)(\d+)(?!\.)(\d*)', input)
input = input[:rx.start()] + rx.group() + ".0" + input[rx.end():]
exec "solution = " + input
return solution
Это код, который я использую для решения уравнений, введенных в калькулятор, над которым я работаю.Кажется, в большинстве случаев он работает нормально, но если я попытаюсь ввести функцию (cos, sin и т. Д.) Со значением за пределами [-9,9], программа зависнет.
Что произошлоЯ делаю неправильно?
Пример строки:
exec "solution = " + "6*cos(6)" -> solution = 5.761 ...
exec "solution = " + "7/cos(8/2)" -> solution = -10.709 ...
exec "solution = " + "sin(12) + 3" -> Freeze
exec "solution = " + "abs(-50) / 2" -> Freeze
Кажется, дело обстоит с любой функцией, которую я пытаюсь использовать.