[Python]Wie kann ich eine Rechnung von einem string zu integer wandeln?
Ich möchte eine Aufgabenstellung, z.B str(12+12-12), in int/float umwandeln und das Ergebnis ausgeben.
import random
lst = ["Was ergibt: 17*3+5*2", "Was ist das Ergebnis von: 12*11+15 ", "Sag mir das Ergebnis von: ((19-1+2)*3+20)*4 "]
x = random.randint(0, len(lst)-1)
v = lst[x].split(":")[1].strip()
print(v)
print(int(v))
#
#ValueError Traceback (most recent #call last)
#Input In [39], in <cell line: 9>()
# 6 v = lst[x].split(":")[1].strip()
# 8 print(v)
#----> 9 print(int(v))
#
#ValueError: invalid literal for int() with base 10: '12*11+15'
3 Antworten
Bei Python gibt es die Funktion eval( ). Diese schaut auf den String und interpretiert es, als wäre es eine Rechnung. Das wäre glaube ich die beste Option für dein Problem.
import random
lst = ["Was ergibt: 17*3+5*2", "Was ist das Ergebnis von: 12*11+15 ", "Sag mir das Ergebnis von: ((19-1+2)*3+20)*4 "]
x = random.randint(0, len(lst)-1)
v = lst[x].split(":")[1].strip()
print(f"Ergebnis: {v} = {eval(v)}")
Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.
LG
Ich kenne mich zwar mit Phyton nicht aus. Das aber ganze Terme die in Strings enthalten sind geparst und ausgerechnet werden können fände ich ziemlich erstaunlich. In den Programmiersprachen die ich kenne ist das parsen zu Zahlentypen möglich, so wie von FaTech aufgezählt.
Sowas geht, Beispiel C# und Compute, aber dafür muss man eben die passende Funktion finden, wie ich halt sagte :)
Du könntest die einen Parser programmieren, der das kann. Grammatiken dafür gibt es viele im Web.
Kleiner Tipp vorweg du kannst um ein zufälliges item einer Liste zu bekommen statt mit der Länge und so weiter zu arbeiten auch einfach
object = random.choice(list_objekt) machen …