Hallo, ich bin gerade dabei mir ein kleines Skript zu schreiben, welches mathematische Funktionen plottet. Das Funktioniert auch schon sehr gut. Nun will ich aber das der Nutzer am anfang des Programms eingeben soll, welche funktion er denn geplottet haben möchte (bisher muss dafür der Code verändert werden). Also brauche ich eine Art Variable in der roher Code (sowas wie 2*pow(x,2)+2, oder so) drin steht, damit der Nutzer nicht bei jedem Neuaufruf der Funktion alles neu eingeben muss. Gibt es so etwas?? Und wenn ja, wäre es super mir kurz zu erklären wie es geht Danke und Grüße Ole
Gast
#4348584
Methoden/Funktionen?? Aber ich glaube ich hab die Frage nicht verstanden.
Die eingebaute Funktion "exec" ermöglicht die Ausführung von Python-Code, der in einem String gespeichert ist. Du musst bei der Benutzung halt bedenken, dass dem Nutzer dadurch die Möglichkeit gegeben wird, eine beliebige Python-Funktion auszuführen. Die Verwendung dieser Funktion ist also nicht ganz sicher ;-)
1 | |
2 | |
3 | |
Vielen Dank. Hat mir sehr geholfen... Grüße
Man kann dynamisch auch eine Funktion erzeugen, die dann genauso wie eine hartcodierte aufgerufen wird:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Da bei der eigentlichen Berechnung der Funktionswerte die langsame eval-Funktion nicht mehr aufgerufen werden muss, ist diese Lösung sehr schnell (sogar noch etwas schneller, als wenn man die Funktion mit
1 | |
2 | |
hartcodiert.
Gast
#4348895
Wenn du in dem, was der Benutzer eingibt, nur Ausdrücke haben willst (also z.B. keine neu definierten Funktionen), dann passt eval besser als exec:
1 | |
2 | |
3 | |
4 | |
5 | |
Das dictionary von math brauchst du, wenn du in dem Ausdruck so Funktionen wie "sin" verwenden willst.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.