Построение функции

введите сюда описание изображения

введите сюда описание изображения

Задание решил следующим образом:

def func(n):
        acc='+*%-/'
        n1=str(n)
        n2=list(n1)
        n3=''.join(n2 for n2 in n1 if n2 in acc)
        if n3=='%':
                n4=n2.remove('%')
                n5=''.join(i for i in n2)
                answer=int(n5)/100
                return answer
        if n3=='+':
                t=n2.index('+')
                n4=''.join(i for i in n2[0:t])
                n5=''.join(i for i in n2[t+1:])
                answer=int(n4)+int(n5)
                return answer
        if n3=='-':
                t=n2.index('-')
                n4=''.join(i for i in n2[0:t])
                n5=''.join(i for i in n2[t+1:])
                answer=int(n4)-int(n5)
                return answer
        if n3=='/':
                t=n2.index('/')
                n4=''.join(i for i in n2[0:t])
                n5=''.join(i for i in n2[t+1:])
                answer=int(n4)/int(n5)
                return answer
        if n3=='*':
                t=n2.index('*')
                n4=''.join(i for i in n2[0:t])
                n5=''.join(i for i in n2[t+1:])
                answer=int(n4)*int(n5)
                return answer
        if n3=='**':
                t=n2.index('*')
                if len(n2)-t>2:
                        n4=int(''.join(i for i in n2[:t]))
                        n5=int(''.join(i for i in n2[t+2:]))
                        answer=n4**n5
                        return answer
                else:
                        n4=int(''.join(i for i in n2[:t]))
                        answer=n4**2
                        return answer

Есть иное(более компактное) решение для данного задания? Мой код решает арифметическое выражение только с двумя числами. Каким образом написать код для трех и более?


Ответы (0 шт):