BlackJack hat geschrieben:@AnAngel: Noch zwei Anmerkungen:
Zahlwerte die mehrfach im Quelltext vorkommen, aber die gleiche Bedeutung haben, sollte man als Konstante definieren. Dann kann man den Wert an *einer* Stelle im Quelltext ändern und muss nicht alle Vorkommen suchen und anpassen, wenn man beispielsweise die Anzahl der erwarteten richtigen Lösungen ändern möchte.
Dass das Rechenzeichen nicht fest in der Zeichenkette steht sondern an einen Namen gebunden und in die Zeichenkette mit der Aufgabe hineinformatiert wird, macht hier (noch) keinen Sinn. Die Addition steht ja auch hart im Quelltext. Um das variabel zu gestalten, müsste man auch die Durchführung der Rechenoperation dynamischer machen. Das `operator`-Modul hat für alle Operatoren die Python kennt, jeweils eine Funktion. Zum Beispiel `add()` für den ``+``-Operator.
Habe das Script nochmals überarbeitet. Was haltet Ihr davon?
Code: Alles auswählen
from random import randint
import operator
anzahl_aufgaben = 10
zaehler = 0
print(anzahl_aufgaben, "Aufgaben richtig lösen")
def zufallszahl(start,stop,start2,stop2):
global zahl1, zahl2
zahl1 = randint(start,stop)
zahl2 = randint(start2,stop2)
def eingabe():
global istantwort
try:
istantwort = int(input("Wieviel ist {0}{1}{2} ".format(zahl1,rechenoperation,zahl2)))
except ValueError:
print("Bitte eine Zahl eingeben!!!")
def plus():
global sollantwort, rechenoperation
rechenoperation = "+"
zufallszahl(1,100,1,100)
eingabe()
sollantwort = operator.add(zahl1,zahl2)
istantwort
def minus():
global sollantwort, rechenoperation
rechenoperation = "-"
zufallszahl(1,100,1,100)
eingabe()
sollantwort = operator.sub(zahl1,zahl2)
istantwort
def mal():
global sollantwort, rechenoperation
rechenoperation = "*"
zufallszahl(1,10,1,10)
eingabe()
sollantwort = operator.mul(zahl1,zahl2)
istantwort
while zaehler < anzahl_aufgaben:
# Rechenart hier wählen!!!
plus()
# Rechenart hier wählen!!!
if istantwort == sollantwort:
zaehler = zaehler + 1
print("Richtig!", zaehler, "von", anzahl_aufgaben)
else:
print("Leider falsch!")