weis net weiter

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
Notgod
User
Beiträge: 14
Registriert: Mittwoch 15. Juli 2020, 08:15

Code: Alles auswählen

class Spiel:
    def abfrage():
        print("(N)eues Spiel \n""(G)eld zeigen \n""(E)nde")
        eingabe_user = input("Was möchtes du machen>>>")
        if eingabe_user in "N" "n":
            Spiel().auswertung(1)
            return 1
        elif eingabe_user in "G""g":
            Spiel().auswertung(2)
            return 2
        elif eingabe_user in  "E""e":
            Spiel().auswertung(3)
            return 3
        else:
            Spiel().auswertung(4)
            return 4
    def auswertung(wert):
        if wert == 1: 
            Zahlen_g()
            f =1
        if wert == 2:
            print("hi")
            #geld klasse noch nicht definiert    
        if wert == 3:
            print("Tüss")
        else:
            print("die angabe gibt es nicht")
            Spiel().abfrage()
            
s = Spiel()
wieso funktioniert dass nicht und es hat schonmal funktioniert ´.
ICH WEIS DAS DAS KEIN GUTER STIEL IST
Notgod
User
Beiträge: 14
Registriert: Mittwoch 15. Juli 2020, 08:15

eigtlich steht vor dem Zahlen_g noch ein # und es wird keine fehlermeldung ausgegeben
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Findest Du es gut, Deine potentiell Helfenden anzuschreien?

Spiel ist keine Klasse. Eine Klasse hat einen Zustand und benutzt self um auf diesen Zustand zuzugreifen. Du hast aber nur ganz normale Funktionen in einen class-Block geschrieben.
`Zahlen_g` ist nirgends definiert, aber das hast Du ja schon selbst geschrieben.

Was denkst Du, was passieren soll? Du erzeugst eine Exemplar der Nicht-Klasse Spiel und tust dann nichts damit.
"N" "n" ist eine seltsame Art "Nn" zu schreiben.
`abfrage` ruft auswertung mit unterschiedlichen Zahlen auf, und liefert diese Zahl auch zurück, wer fängt was mit der Zahl an? Dann ruft `auswertung` auch wieder `abfrage` auf. Solche Rekursiven Verschachtelungen macht man nicht, weil damit der Programmfluß undurchsichtig wird.
Dieses "angabe gibt es nicht" funktioniert auch nicht, weil es auch bei wert == 1 oder 2 aufgerufen wird, da fehlen die elif.

Fang am besten einfach an, und lass das mit den Klassen noch, bevor Du nicht gut mit Funktionen arbeiten kannst.
Erster Schritt ist, die Klasse loswerden, und die Rekursion, indem Du gleich in `abfrage` auf Gültigkeit prüfst:

Code: Alles auswählen

def abfrage():
    print("(N)eues Spiel \n""(G)eld zeigen \n""(E)nde")
    while True:
        eingabe_user = input("Was möchtes du machen>>>")
        if eingabe_user in "Nn":
            auswertung(1)
            break
        elif eingabe_user in "Gg":
            auswertung(2)
            break
        elif eingabe_user in  "Ee":
            auswertung(3)
            break
        else:
            print("die angabe gibt es nicht")

def auswertung(wert):
    if wert == 1: 
        Zahlen_g()
        f =1
    elif wert == 2:
        print("hi")
        #geld klasse noch nicht definiert    
    elif wert == 3:
        print("Tüss")
    else:
        assert False, "dieser Fall kann nicht auftreten"
            
abfrage()
Warum wandelst Du das Zeichen in eine Zahl um? Das macht die Sache ja nicht aussagekräftiger. Eine Funktion sollte genau eine Sache machen, also nur die Eingabe abfragen und nicht gleich auch auswerten, das passiert erst im Hauptprogramm.

Code: Alles auswählen

def abfrage():
    print("(N)eues Spiel \n""(G)eld zeigen \n""(E)nde")
    while True:
        eingabe_user = input("Was möchtes du machen>>>").lower()
        if eingabe_user in ('n', 'g', 'e'):
            break
        print("die angabe gibt es nicht")
    return eingabe_user

def auswertung(wert):
    if wert == "n": 
        zahlen_g()
    elif wert == "g":
        print("hi")
        #geld klasse noch nicht definiert    
    elif wert == "e":
        print("Tüss")
    else:
        assert False, "dieser Fall kann nicht auftreten"
            
eingabe_user = abfrage()
auswertung(eingabe_user)
Das ist schonmal ein Grundgerüst, mit dem man weiter arbeiten kann.
Notgod
User
Beiträge: 14
Registriert: Mittwoch 15. Juli 2020, 08:15

Danke für die HIlfe.
Und ich schreibt das immer an ende damit mir niemand damit kommt weil das igw nervt.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Weisst du was auch nervt? Leute, die genervt sind von kostenloser Hilfe, die sie erhalten. Und einen dann auch noch LAUT ANPAULEN. Das nervt ganz schnell so sehr, dass man gar keine Lust mehr hat, so jemandem ueberhaupt zu helfen.
Notgod
User
Beiträge: 14
Registriert: Mittwoch 15. Juli 2020, 08:15

ok sorry war dumm
Antworten