wie schreibe ich ein python Programm in dem ich nach plus und minus aufgaben abgefragt werde?

...komplette Frage anzeigen

1 Antwort

Hiho,

Von der Benamsung mal abgesehen :D 

from random import randint

def main():
status = True
operators = ["-", "+"]
score = 0
total_exercises = 0
print "Write \\\\"quit\\\\" to quit"
min_value = int(raw_input("min value: "))
max_value = int(raw_input("max value: "))
exercise_limit = int(raw_input("Number of exercises: "))

while status:
if total_exercises == exercise_limit:
print "Total correct exercises: %s of %s" % (score, total_exercises)
break calculation = "%s %s %s" % (randint(min_value, max_value), operators[randint(0, 1)], randint(min_value, max_value))
total_exercises += 1
user_result = raw_input("What is %s: " % calculation)
result = eval(calculation)
if user_result.upper() == "QUIT":
status = False
try:
user_result = int(user_result)
except ValueError:
print "Invalid input!"
continue if user_result == result:
score += 1
print "correct"
print "current score: %s" % score
print "-" * 40

main()

Der Code ist jetzt nicht der Geilste und man kann noch VIEL einbauen aber ich denke das Funktioniert ganz gut (hatte 5 vo 5 richtig beim ersten Test ;) )

Aber um das gleich mal zu sagen! benutze am besten NIEMALS die eval() Funktion da du damit Strings in Pythoncode interpretierst :D und bei z.B. Benutzer eingaben kann sowas SEHR schlecht sein :D
Basierent auf 2.7.11

MfG
Freddy

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von xXFreddy
10.04.2016, 12:03

Oha sehe das jetzt erst nach dem break kommt das calculation natürlich ausserhalb des ifs über total_exercises



if total_exercises == exercise_limit:
print "Total correct exercises: %s of %s" % (score, total_exercises)
break calculation = "%s %s %s" % (randint(min_value, max_value), operators[randint(0, 1)], randint(min_value, max_value))
total_exercises += 1

UND unten kommt das if nicht innerhalb des except Valueerror: also



except ValueError:
print "Invalid input!"
continue if user_result == result:
score += 1
print "correct"

Die einrückungen sehen hier jetzt komisch aus (oder garnicht vorhanden ;) ) sollten aber eig alle nur 4 leerzeichen entsprechen!

:D

0

Was möchtest Du wissen?