ich versuche mir in meiner Freizeit Python beizubringen.
Dabei bin ich auf python-lernen.de gestoßen.
Aber bei dem Hangman-Spiel verstehe ich etwas nicht.
An der Stelle bei x += 1 habe ich so meine Probleme.
Ich weiß was passiert wenn ich das weglasse.
Aber nicht was /wie genau passiert, mit dem hochzählen...
Müsste es nicht immer nur ein Buchstabe weiter nach rechts (einer nach dem anderen) ausgegeben werden?
Stattdessen weiß das Programm direkt wo im Wort der nächste Buchstabe ist der gefunden wurde. (Egal an welcher Position)
Vielleicht findet sich jemand, der sich meiner erbarmt
und mir das so erklären kann, als ob er es einem 5jährigen erklärt

Code: Alles auswählen
# Weil das Zufallsmodul benötigt wird
import random
# Wörter aus denen das Programm per Zufall auswählen kann
woerter = 'Hund Katze Maus Haus raus'.split() # .split() wandelt die Zeichenkette in eine Liste um
# aus der woerter-Liste ein zufälliges Wort auswählen
ratewort = random.choice(woerter)
# die erratenen Wörter speichern und zusammen mit den nicht erratenen (die _ ) ausgeben
erraten = []
# die Nutzereingabe
nutzereingabe = ""
# die Versuche das Wort zu erraten begrenzen
fehlversuche = 7
#print(ratewort)
print('"Hangman"')
print()
print("Du hast genau 7 Versuche das gesuchte Wort zu erraten.")
print("Mit der Eingabe bye kannst du das Spiel beenden.")
print()
'''
# für die einzelnen Buchstaben des "ratewortes" nur Unterstriche ausgeben
# zusätzlich soll ein Leerzeichen nach dem Unterstrich kommen, damit es deutlich ist wieviele Buchstaben das "ratewort" hat
# jeden einzelnen Buchstaben im "ratewort" durchlaufen
# zum testen jeden Buchstaben danach mit Leerzeichen ausgeben
# für jede Ausgabe soll ein Unterstrich mit zusätzlichem Leerzeichen ausgegeben werden
# # # nur zum Test! # # #
for buchstaben in ratewort:
print(buchstaben, " ", end='_') # end='' ->Zeichenkette, die nach dem letzten Wert angehängt wird, standardmäßig ein Zeilenumbruch
# nur die Unterstriche anzeigen lassen, wo ersichtlich wird, wieviele Buchstaben das Ratewort hat
# quasi für die erste Runde
for buchstaben in ratewort:
print("", end='_ ')
'''
for buchstaben in ratewort:
erraten.append('_')
# da das Spiel mehrere Runden läuft wird eine Schleife benötigt
while nutzereingabe != "bye": # der Nutzer kann mit "bye" das Spiel abbrechen
for ausgabe in erraten:
print(ausgabe, end=' ') # nur die Unterstriche anzeigen lassen, wo ersichtlich wird, wieviele Buchstaben das Ratewort hat
print()
nutzereingabe = input("Dein Vorschlag: ")
# das Ratewort Buchstabe für Buchstabe über eine for-Schleife durchlaufen lassen
# um zu überprüfen ob der Spieler-Buchstabe vorkommt
x = 0 # Hilfsvariable um die Position des aktuellen Buchstaben in der Liste zu erkennen
for buchstaben in ratewort:
if buchstaben.lower() == nutzereingabe.lower(): # mit .lower() werden alle Eingaben zu Kleinbuchstaben umgewandelt
print("Treffer!")
erraten[x] = buchstaben
x += 1 # damit der erratene Buchstabe an der Position bleibt, wo er hingehört
'''
- Mit erraten[x] = buchstaben wird die Stelle x in der Liste erraten mit dem vom Spieler
eingegebenen Buchstaben ersetzt
- Lasse ich x += 1 weg, dann kommt der Buchstabe immer an erster Stelle.
Weil vorher ja X auf 0 gesetzt wurde, sprich an die ERSTE Stelle in der Liste "erraten"
- Wieso wird bei x += 1 der vom Spieler eingegebene Buchstabe, auf die richtige Position
in der Liste erraten gesetzt?
Müsste es nicht immer nur ein Buchstabe weiter nach rechts (einer nach dem anderen) ausgegeben werden?
'''
print()
# Kontrolle ob gewonnen
if '_' in erraten:
fehlversuche -= 1
if fehlversuche == 0:
print("Schade - verloren!")
print("Das gesuchte Wort war:", ratewort)
break
else:
print("Gewonnen! Das gesuchte Wort war:", ratewort)
break