Как передать арифметическое выражение в аргумент функции?
Доброго времени суток,
Народ, не могу нагуглить как передать математическую операцию в функцию в качестве аргумента.
Задание из основ python.
Как передать арифметическое выражение в функцию? где выполнить само действие.
Пример задания:
Тесты которые указаны в примеры, код прошел. На сложных выражениях не работает)))
def arithm(*args):
try:
res = eval(args[0])
return res
except:
s =""
args = ''.join(args)
j = args[0]
for i in range(len(args)):
if '%' in args[i]:
s = args[:i]
s = int(s)
s = s/100
return s
if '*' in args[i] and args[i+1]:
s = args[:i]
s = int(s)
s = s**2
return s
else:
j = args[i]
print(arithm('9**'))
Владимир Куц Спасибо, но до конца не понял как быть с входными данными типа 4**, 100%. Экранировать символы * и % не выходит. А обозначать математическую операцию переменой - слишком раздувает функцию.
Ответ получил из упрощения:
print(myfunc(lambda x: x/100, 100))
print(myfunc(lambda x: x*x*x, 4))
Единственное, что хочу добавить, часть ваших задач может решить eval()
def my_func(*args):
try:
result = eval(args[0])
except SyntaxError:
result = "Всё же самому нужно подумать"
return result
print(my_func("1 + 9"))
print(my_func("100%"))
print(my_func("4**"))
print(my_func("9**3"))