Problem ze stringiem Python

0

Cześć wszystkim,

Mam pewien problem podczas pisania prostego programu do całkowania numerycznego w python.
Otóż załóżmy że chce żeby po wprowadzeniu (przez Entry) funkcji (np. x**2) można było narysować wykres tej funkcji.
Tak wygląda kod tego dotyczący:

def func_wykres(x):
    function = entry_fun.get()
    return function

def cal_wykres():
    a = int(entry_a.get())
    b = int(entry_b.get())
    z = numpy.linspace(a-1,b+1)
    pyplot.plot(z,func_wykres(z))
    pyplot.show()

Po wywołaniu tych funkcji mam następujący błąd:
ValueError: Illegal format string "x**2"; two marker symbols

Raczej chodzi o to że wprowadzana wartość jest stringiem i podczas wyliczania funkcji problemem są znak cudzysłowie (").

Czy ma może ktoś pomysł co można zrobić żeby użytkownik wprowadził funkcję prze Entry i mógł wygenerować wykres tej funkcji?

Z góry dziękuję za pomoc.

1

Jeżeli faktycznie problemem jest cudzysłów to może entry = entry[1:-1]?

0

@szafran98: Niestety to nie działa. Próbowałem też z funkcją replace i nie pomogło

1

Jeśli dobrze zrozumiałem to coś takiego jak eval() może Ci pomóc

1

Problem jest taki ze nie rozumiesz jaka jest różnica między funkcją a stringiem. A jest mniej więcej taka jak między ferrari w garażu a napisaniem sobie na kartce "ferrari". Zresztą ten kod w ogóle ma niewiele sensu, bo masz tam jakiś argument w tym swoim func_wykres, który to nie ma absolutnie żadnego sensu bo go nie używasz. Czy pylot w ogóle potrafi generować wykres na podstawie "funkcji"? Czy moze jednak musisz tam policzyć listę wartości funkcji? o_O
Zgaduje że trzeba by tam czegoś w stylu:

def func_wykres(x_list):
    function = eval("lambda x:"+entry_fun.get())
    return [function(x) for x in x_list]

1 użytkowników online, w tym zalogowanych: 0, gości: 1