Problem mit Rechenspiel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Es handelt sich um mein unfertiges Rechenspiel, welches ich entwickel um meine Python-Kentnisse zu festigen.
Wenn man nun "Addition" auswählt und eine Aufgabe richtig lößt, so wird trotzdem "Falsch" auf der Konsole ausgegeben.
Es handelt sich offenbar um einen logischen Fehler, ich finde ihn nicht und wäre sehr dankbar wenn jemand den Fehler für mich findet!

Code: Alles auswählen

import random as r, time as t

Intelligenz = 0
Erfahrung = 0
Erfahrung_benoetigt = 20
Stufe = "Faules Kind"
Fortschritt = 0
Fortschritt_benoetigt = 20
Reichsmark = 0

Rechenmeister = 1
Goldschmiede = 1
Klares_Denken = 1

Zurueck1 = 1

def rechnen_einfach(zahlen, rechenzeichen ,loesung):
    Versuch = raw_input(str(zahlen[0]) + rechenzeichen + str(zahlen[1]) + " = ")
    if Versuch == loesung: Ueberpruefung = "ja"
    else: Ueberpruefung = "nein"
    return Ueberpruefung
    

while True:
    print "[1] Profil"
    print "[2] Rechnen "
    print "[3] Buecher "
    print "----------------------------------------"
    Aktion = raw_input("Aktion: ")
    print

    if Aktion == "1":
        print "Intelligenz  : " + str(Intelligenz) + "     Erfahrung   : " + str(Erfahrung) + "/" + str(Erfahrung_benoetigt)
        print "Stufe: " + str(Stufe) + "   Fortschritt : " + str(Fortschritt) + "/" + str(Fortschritt_benoetigt)
        print "Reichsmark   : " + str(Reichsmark)
        print
        t.sleep(3)

    if Aktion == "2":
        Rechnen = 0
        
        while Rechnen != Zurueck1:
            if Rechenmeister == 1: print "[1] Addition"
            if Rechenmeister == 2: print "[2] Subtraktion"
            if Rechenmeister == 3: print "[3] Multiplikation"
            print "----------------------------------------"
            Rechnen = raw_input("Verfahren: (Zurueck = " + str(Zurueck1) + ")")
            print

            if Rechnen == "1" and Rechenmeister == 1:
                Zahlen = [r.randint(3, 20), r.randint(3, 20)]
                Ja_Nein = rechnen_einfach(Zahlen, " + ", Zahlen[0] + Zahlen[1])
                if Ja_Nein == "ja": print "Richtig"
                else: print "Falsch"
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Dexter1997: da mußt Du wohl debuggen. Wie sieht die Bedingung aus, dass "Richtig" ausgegeben wird? Ist in jedem Schritt von der Eingabe der Versuche bis zur Ausgabe die Werte in den Variablen, die Du erwartest? Wo ist das nicht mehr der Fall und was statt dessen?
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Ich hab immer noch keine Ahnung und bin ziemlich ratlos. Was heißt eig. debuggen?
hast du selbst den fehler schon erkannt? ich seh ihn einfach nicht
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

es geht nicht ums sehen, sondern ums suchen. Fehler muß man eingrenzen, so lange bis man die Ursache gefunden hat. Das wichtigste am Programmierenlernen ist das Lernen, wie man Fehler findet. Das heißt, das Programm in so kleine Teile teilen, die man Überblicken kann und sicher sein kann, dass darin der Fehler nicht ist.
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

So Problem gelöst, der vom benutzer erhaltende String wird jetzt automatisch in eine Zahl umgewandelt
danke für deine Hilfe!
Antworten