Funktions(string) als math. Zuweisung nutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Back2basic
User
Beiträge: 23
Registriert: Montag 23. April 2012, 09:53

moinsen,

gibt es eine möglichst einfache Lösung einen String so zu nutzen, dass ich mit diesem einer Variablen eine Int, float etc.
Wert zuweisen kann ?

zb.

Code: Alles auswählen


def func (func_str):  

x = 1

# func_str könnte ja zb. x+3 lauten ... so das y = 4 waere und nicht y = "x+3"
y = func_str
 
Benutzeravatar
pillmuncher
User
Beiträge: 1482
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

guckstu hier.
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Per String ist das nicht so einfach - und nein, ``eval`` will man eigentlich nicht nutzen ;-)

Wozu genau brauchst Du das? Bzw. was genau willst Du machen. Ich vermute hier ein XY-Problem, daher wären Hintergrundinfos wirklich wichtig.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Back2basic
User
Beiträge: 23
Registriert: Montag 23. April 2012, 09:53

ich will einfach einer Methode einen Funktionsstring übergeben damit ich zb. Grenzwert, Nullstellen etc. berechnen kann ...

zb. y = "string" wobei string => (x+3)/4 oder x**2 sein kann.


Damit könnte ich dann halt abbilden...

Wäre eine Alternative statt jetzt immer der Funktion eine Funktion etc. mitzugeben ...


THX für den Typ mit dem AST Modul, werde ich mal probieren ...

Weitere Ideen sind natürlich willkommen....

Schon mal besten Dank...
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Back2basic hat geschrieben:Wäre eine Alternative statt jetzt immer der Funktion eine Funktion etc. mitzugeben ...
Was ist daran schlimm, einer Funktion eine Funktion zu geben?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du verschweigst uns immer noch, *was* Du eigentlich erreichen willst? Du willst ja ein bestimmtes Problem damit lösen, einen String mit einem mathematischen Term auszuwerten. Die Frage ist, was ist das ursprüngliche Problem? Evtl. ist Dein Lösungsansatz nicht optimal und es gibt eine sinnvollere Alternative.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Back2basic
User
Beiträge: 23
Registriert: Montag 23. April 2012, 09:53

bestimmt gibt es bessere Varianten, der Sinn dient der Abbildung, also jedem x ein f(x)

und f(x) = expression .... Der Ausdruck wird ja im Methodenkopf übergeben...
So ist die Methode recht flexible und kann halt auf Funktionen zugreifen die dann halt eingetippt werden zb. x+3 oder x **2

P.S

Die Methode die diese Funktion übergeben wird soll einfach die Nullstellen berechnen. Also f(x) == 0
und das halt mit möglichst vielen vielen Funktionen ...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also willst Du eine Art CAS bauen? Dann schau Dir doch mal SymPy an.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten