ich bin gerade dabei Python zu lernen und bin auf ein Problem gestoßen, das ich nicht beheben kann. Daher dachte ich, ich wende mich an Euch
Das Programm erstellt eine Liste zufälliger Länge und beinhaltet zufällige Ganzzahlwerte (zwischen 1 und 100).
Der Anwender kann nun entscheiden, ob diese Werte addiert, subtrahiert, multipliziert oder dividiert werden sollen. Um zu vermeiden, dass ich vier Unterfunktionen einrichten muss, habe ich hier mit exec() gearbeitet. Solange ich den Code nicht in eine Funktion presse, funktioniert alles prima. Sobald ich aber eine Funktion außenrum spanne, funktioniert exec() offensichtlich nicht mehr.
- Woran liegt das?
- Was muss ich machen, dass das auch innerhalb einer Funktion richtig funktioniert?
- Kann exec() ein Sicherheitsrisiko werden und ist eher von der Benutzung abzuraten?
Vielen Dank im Voraus für die vielen Antworten
Euer Jon Snow
..:: Ab hier der Code ::..
Folgender Code funktioniert ohne Mullen und Knullen
Code: Alles auswählen
import random
#Liste mit beliebligen Zufallszahlen anlegen und deren Mittelwert berechnen
liste = []
anzElemente = random.randint(5,12)
for m in range(0,anzElemente):
liste.append(random.randint(1,100))
# Debugzwecke
print (liste)
# Übergabe der mathematischen Operation
mathOperator = input("Bitte geben Sie den mathematischen Operator an: ")
if mathOperator == "/" or mathOperator == "*":
ergebnis = 1
elif mathOperator == "+" or mathOperator == "-":
ergebnis = 0
else:
print ("Falsche Eingabe")
quit()
# Berechnung
formel = "ergebnis = ergebnis" + mathOperator + "n"
for n in liste:
exec(formel)
print (ergebnis)
Der exakt selbe Code innerhalb einer Funktion, funktioniert nicht mehr
Code: Alles auswählen
def rechnen():
import random
#Liste mit beliebligen Zufallszahlen anlegen und deren Mittelwert berechnen
liste = []
anzElemente = random.randint(5,12)
for m in range(0,anzElemente):
liste.append(random.randint(1,100))
#debug Zwecke
print (liste)
# Übergabe der mathematischen Operation
mathOperator = input("Bitte geben Sie den mathematischen Operator an: ")
if (mathOperator == "/") or (mathOperator) == "*":
ergebnis = 1
elif (mathOperator == "+") or (mathOperator == "-"):
ergebnis = 0
else:
print ("Falsche Eingabe")
quit()
# Berechnung
formel = "ergebnis = ergebnis" + mathOperator + "n"
for n in liste:
exec(formel)
return ergebnis
print(rechnen())