Hilfe beim Code

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
paradiesvogel24
User
Beiträge: 36
Registriert: Dienstag 31. Oktober 2017, 18:06

Servus zusammen.
ich lerne gerade Python Programmieren mit Hilfe des Buches"Programmieren mit Python supereasy " und komme damit bisher am besten klar da man direkt lernt kleine Programme zu programmieren.

Jetzt bin ich an einem Spiel und habe den Code genau so geschrieben wie im Buch aber bekomme eine Fehlermeldung.

Normal soll man einen Buchstaben oder das komplette Wort eingeben aber bei jedem Buchstaben selbst wenn es stimmt kommt die Meldung: Falsch. Ein Leben weniger.

Ich finde einfach den Fehler nicht und würde mich über Hilfe freuen.

LG

Hier der Code:

Code: Alles auswählen

import random

leben = 10
wörter = ['Pizza', 'Braut', 'Salat', 'Sorge', 'Tante' 'Otter', 'Pferd', 'Vogel', 'Falke',
          'Bauch', 'Bohne','', 'Bucht', 'Arche', 'Asche', 'Milch', 'Kelch',
          'Cache', 'Fahrt', 'Flach', 'Fuchs', 'Hagel','Halma', 'Hände',
          'Füsse', 'Haube', 'Taube', 'Affig', 'Ahnen', 'Agent', 'Adern',
          'Abbau', 'Anbau', 'Acryl', 'Adria', 'Alarm', 'Annas', 'Anmut']
geheim_wort = random.choice(wörter)
verdeckt_wort = list('?????')
herz = u'\u2764'
wort_richtig_geraten = False

def aktu_verdeckt(buchstabe_geraten, geheim_wort, verdeckt_wort):
    index = 0
    while index < len(geheim_wort):
        if buchstabe_geraten == geheim_wort[index]:
            verdeckt_wort[index] = buchstabe_geraten
        index = index + 1

while leben > 0:
    print(verdeckt_wort)
    print('Verbleibende Leben:' + herz * leben)
    raten = input('Rate einen Buchstaben oder ein Wort:')

    if raten == geheim_wort:
        wort_richtig_geraten = True
        break
        
    if raten in geheim_wort:
        aktu_verdeckt(raten, geheim_wort, verdeckt_wort)

    else:
        print('Falsch. Ein Leben weniger')
        leben = leben - 1

    if wort_richtig_geraten:
        print('Gewonnen! Das geheime Wort war' + geheim_wort)

    else:
        print('Leider verloren! Das geheime Wort war ' + geheim_wort )
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du hast einen Einrueckungsfehler gemacht. Die unterste if/else-Klausel muss auf die oberste Ebene, NICHT in die Schleife.

Und wenn das der Code aus dem Buch ist, dann mag das supereasy sein, aber auch superschlecht. Warum schreiben so viele Leute Buecher ueber Python, die so offensichtlich die Sprache nicht beherschen fragt man sich...
paradiesvogel24
User
Beiträge: 36
Registriert: Dienstag 31. Oktober 2017, 18:06

Vielen Dank für schnelle Antwort.

An welche Stelle soll die if/else Klausel hin?

Irgendjemand wird an jedem Buch etwas finden von daher kann man es nie allen Recht machen. Beim ersten Programm (Passwortgenerator) hatte ich keine Probleme aber hier stecke ich fest.

Welche Bücher würdest du denn für Anfänger empfehlen?
Bisher habe ich mir bestimmt 20 angeguckt und mit dem komme ich am besten klar.

Mit welchem hast du denn gelernt?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ohne Buch, ich konnte schon programmieren, und dadurch habe ich mir Python so raufschaffen koennen.

Und wie gesagt, das if/else muss auf die oberste Ebene. Das Einrueckungen etwas in Python bedeuten hat das Buch doch hoffentlich erklaert?
Antworten