Seite 1 von 1

weis net weiter

Verfasst: Sonntag 22. November 2020, 13:36
von Notgod

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

Re: weis net weiter

Verfasst: Sonntag 22. November 2020, 13:37
von Notgod
eigtlich steht vor dem Zahlen_g noch ein # und es wird keine fehlermeldung ausgegeben

Re: weis net weiter

Verfasst: Sonntag 22. November 2020, 13:56
von Sirius3
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.

Re: weis net weiter

Verfasst: Sonntag 22. November 2020, 14:58
von Notgod
Danke für die HIlfe.
Und ich schreibt das immer an ende damit mir niemand damit kommt weil das igw nervt.

Re: weis net weiter

Verfasst: Sonntag 22. November 2020, 15:02
von __deets__
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.

Re: weis net weiter

Verfasst: Sonntag 22. November 2020, 19:28
von Notgod
ok sorry war dumm