parsowanie wyrażenia matematycznego w pythonie i rozwiązywanie problemów w celu znalezienia odpowiedzi

Jestem całkiem nowy w programowaniu. Dotyczy to pythona. Więc pomysł polega na przyjęciu wyrażenia, takiego jak 3/5 lub najwyżej 3/5 * 2 (najwyżej dwóch operatorów, zauważ, że operatorami mogą być dowolne z +, -, /, *) i rozwiń je. Biała przestrzeń może istnieć w dowolnym miejscu wyrażenia.

Użytkownik wprowadza wyrażenie, powiedzmy 3/5, a program musi rozwiązać wyrażenie i wyświetlić odpowiedzi. To, co próbowałem, jest poniżej. Zauważ, że próbowałem tylko pierwszej części, kiedy mogę poprawnie podzielić oryginalne wyrażenie, które użytkownik wprowadza (które byłoby ciągiem), tworzenie funkcji byłoby łatwą częścią:

expres= str(input("something:"))

ssplit= hit.partition("/")
onec= int((ssplit[0].lstrip()).rstrip())
twoc= (ssplit[1].lstrip()).rstrip()
threec= int((huns[2].lstrip()).rstrip())


print(onec,"...",twoc,"...",threec) #just a debug test print

Więc powyżej, mogę przyjąć wyrażenie takie jak 3/5 i podzielić je na trzy oddzielne ciągi: 3, / i 5. Mogę także usunąć wszystkie białe znaki przed i po operatorach / operandach. Mam problemy z dzieleniem wyrażeń, takich jak 4/5 + 6, ponieważ nie mogę umieścić kodu dla ssplit [3] lub ssplit [4], a następnie wprowadzić wyrażenie takie jak 3/5, ponieważ nie zostanie ono zdefiniowane. Zasadniczo potrzebowałem ci pomocy, aby dowiedzieć się, jak podzielić wyrażenie takie jak 3 / 4-6 itd. Potrzebuję także pomocy z linią ”ssplit= hit.partition("/")„tak, aby spojrzał na wprowadzone wyrażenie i działał również z +, - i *. Każda pomoc jest mile widziana. Również jeśli powyższy kod wygląda paskudnie i nieefektywnie, daj mi krytykę. Dzięki!

Uwaga Nie mogę i nie chciałbym używać eval. Wymagana jest kolejność operacji. Nie mogę używać skomplikowanych poleceń. Muszę to uprościć, najbardziej mogę używać bibliotek ciągów, konwertując między łańcuchami / liczbami całkowitymi / zmiennoprzecinkowymi itd., A jeśli, i, itp. sprawozdania. Mogę również korzystać z funkcji.

questionAnswers(3)

yourAnswerToTheQuestion