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.