Podanie funkcji matematycznej przez użytkownika w Pythonie

Podanie funkcji matematycznej przez użytkownika w Pythonie
AD
AD
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:22
0

Witam.
Mam problem z odczytaniem funkcji z klawiatury użytkownika i pracowaniu na niej. Chodzi o to, zeby użytkownik mógł podać jakąś funkcję (np. x + 2), a potem, zebym mogla bez problemów wyświetlać f(zadanej liczby), albo porównywać f(a) z f(b), gdzie a i b także podaje użytkownik.
Udało mi się znależć coś takiego:
fx = input("Podaj funkcje : ")
funkcja = lambda x: eval(fx)
Niestety dalej nie moge wysiwetlic tej funkcji ani porównywać jej wartości od zadanych liczb.

edytowany 2x, ostatnio: adekniejadek
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:31 minut
1

https://en.m.wikipedia.org/wiki/Shunting-yard_algorithm

Edit: no mozna eval ale to chyba srednio bezpieczne


λλλ
edytowany 1x, ostatnio: stivens
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
0

Jeśli Masz wyrażenia całkowicie znawiasowane, to gotowiec w Javie jest tutaj:
https://algs4.cs.princeton.edu/13stacks/Evaluate.java.html


PG
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:10
0

Jak najbardziej mozesz wyswietlac funkcje w ten sposob:
print(fx)
Mozesz rowniez podstawiac tam dowolne wartosci oraz je porownywac:

Kopiuj
a = input("Podaj wartosc a: ")
b = input("Podaj wartosc b: ")
x = int(a)
fa = eval(fx)
print("Wartosc funkcji fx dla x = a : ",fa)
x = int(b)
fb = eval(fx)
print("Wartosc funkcji fx dla x = b : ",fb)
if fa > fb:
#dzialanie
    pass
else:
#dzialanie
    pass
AD
adekniejadek
Bardzo dziękuję! O to mi chodziło i cały program działa :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.