Eingabenprüfungen in einfaches Lotto-Tippspiel einbauen

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
SITARUK
User
Beiträge: 4
Registriert: Donnerstag 11. Januar 2018, 21:57

Hallo zusammen,

ich bin Neuling in der Programmierung und neu in diesem Forum.

Ich möchte in mein kleines Tippspiel Eingabenprüfungen einbauen. D.h. zur Zeit gibt es einen Abbruch wenn ich bei Eingabe des Einsatzes oder den Tipps einen Buchstaben eingebe.

Hat jemand eine Idee ?

Code: Alles auswählen

from random import randint
import time

startkapital=int(1000)
Einsatz = 0

spielRundeLaeuft="j"

while spielRundeLaeuft =="j" and startkapital >0:

    
    MultipLottospieler = 12345
    AnzLottozahlen=7
    zaehler=0
    lottoTip =[]
    lottoSpieler = randint (1,100)*MultipLottospieler
    gesamtEinsatz=lottoSpieler*randint (10,20)
    print ("Willkommen bei Lotto ! Ihr Startkapital beträgt: ",startkapital)
    time.sleep(1)
    print ("In dieser Runde nehmen ",lottoSpieler," Spieler teil.")
    print ("In dieser Runde liegt der Gesamteinsatz bei ",gesamtEinsatz," EUR")
    
    
    Einsatz =int(input("Wie hoch ist Ihr Einsatz? :"))
        
    if Einsatz < startkapital :
            startkapital = startkapital - Einsatz
            print ("ok - Ihr Einsatz ist : ", Einsatz, "Damit haben Sie noch ", startkapital)
       
        
          
            while zaehler < AnzLottozahlen:
                eingabeZahl = int(input ("Bitte geben Sie eine Lottozahl ein : "))
                if eingabeZahl >=1 and eingabeZahl <50 :
                        lottoTip.append(eingabeZahl)
                        zaehler = zaehler+1
                else:
                        print("Diese Zahl existiert nicht im Lottosystem")
    
    
            print ("Ihr Tipp : ",lottoTip)
        
            ziehung = []
        
            anzahlElemente = 7
        
            while anzahlElemente > 0:
                hinzu = randint (1, 49)
                ziehung.append(hinzu)
                anzahlElemente = anzahlElemente - 1
        
            print ("ziehung ",ziehung)
        
            ergebnis = list (set(lottoTip).intersection(set(ziehung)))
        
            print ("Ihre Zahlen sind richtig :",ergebnis)
            Treffer = len(ergebnis)
            print ("Sie haben ",Treffer, " RICHTIGE")
        
            if Treffer == 3:
                    print ("Ihr Gewinn ist 10 EUR" )
                    startkapital = startkapital + 10
            elif Treffer == 4:
                    print ("Ihr Gewinn ist 100 EUR" )
                    startkapital = startkapital + 100
            
    else:
            print ("Ihnen fehlt das Geld für diesen Einsatz!")
                
    spielRundeLaeuft = input ("Wollen Sie weiterspielen? ")
    
    

print ("Auf Wiedersehen")

Zuletzt geändert von SITARUK am Donnerstag 11. Januar 2018, 22:29, insgesamt 1-mal geändert.
Mit freundlichen Grüßen aus Dortmund
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@SITARUK: 70 Zeilen sind eindeutig zu lang für eine while-Schleife. Teile das Programm in Funktionen auf. Die vielen Leerzeichen und Einrückungen machen den Code zusätzlich schwer lesbar. Eingerückt wird immer mit 4 Leerzeichen pro Ebene und nicht mal 4 und mal 8. Variablen werden klein_mit_unterstrich geschrieben. Variablen initalisiert man am besten erst, wenn man sie auch braucht. Um den Abbruch zu verhindern, fängt man die Exception ab und fragt in einer Schleife so lange die Eingabe ab, bis sie korrekt war.
SITARUK
User
Beiträge: 4
Registriert: Donnerstag 11. Januar 2018, 21:57

Vielen Dank für die künftig zwingend einzuhaltenden Formatierungsregeln. Ich werde entsprechende Anpassungen vornehmen.

Wie binde ich dann die exception am besten ein ?
Mit freundlichen Grüßen aus Dortmund
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

indem du `try... except` verwendest und dann gezielt den auftretenden Fehler - hier also ein ValueError - abfängst. Nie ein nacktes `except` verwenden.

Gruß, noisefloor
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

SITARUK hat geschrieben:Vielen Dank für die künftig zwingend einzuhaltenden Formatierungsregeln.
Bezüglich des Aussehens des Codes sind es Empfehlungen, allerdings sehr starke Empfehlungen. Siehe dazu den offiziellen Style Guide for Python Code.
Antworten