ich bin neu ier und habe auch gleich mal ne Frage bzw ein Problwm.
Für die Schue programmiere ich gerade mit Python ein hangman-Spiel.
Benutze Listen usw, damits auch gut ankommt. Jetzt habe ich allerdings ein Problem, und zwar gibt der mir immer eine Fehlermeldung aus, wenn es darum geht, dass ein Buchstabe doppelt voprkommt und die Positionen in dem Wort ermittelt werden.
Code: Alles auswählen
# -*- coding: cp1252 -*-
#Importieren
from turtle import*
import random
from hangman_turtle import*
#Hinweise
print 'Beachte, dass alle Woerter, egal ob Nomen oder nicht, klein geschrieben werden.'
#Grundlegende Variablen
Versuche = 9
#Liste der Wörter
Woerter = ['beispiel', 'wort', 'hangman', 'eltern', 'geschwister', 'bruder',
'name', 'spiel', 'klassenraum', 'informatik', 'sohn', 'tochter',
'tier', 'programm']
#Anfang der eigentlichen Spieles
while Versuche > 0:
#Veränderbare Variablen
Punkte = 0
Buchstaben = 0
Anzahl_W = 0
Position_B = 0
Position_B_1 = 0
Position_B_2 = 0
Position_B_3 = 0
Position_B_4 = ''
Loesung = 0
laenge = 0
Falsch_B = ''
Falsch_B_1 = 0
Anzahl_E = 0
Stelle = 0
Stelle_2 = 0
Stelle_3 = 0
#Ermitteln und Ausgabe der Anzahl der Wörter, die noch ausstehen
for words in Woerter:
Anzahl_W = Anzahl_W + 1
if Anzahl_W > 1:
print 'Es befinden sich noch', Anzahl_W, 'zu loesende Woerter in der Liste.'
else:
print 'Es befindet sich noch ein zu loesendes Wort in der Liste.'
print ' '
print ' '
#Zufallsermittlung des Wortes
Auswahl = random.randint(0,Anzahl_W-1)
Wort = Woerter[0]
#Ausgabe der _ pro Buchstabe, Ermittlung der Anzahl an richtigen Buchstaben
#für die Lösung und Ermittlung und Ausgabe der Anzahl der Buchstaben
#in dem Wort
for letter in Wort:
print '_',
Loesung = Loesung + 1
Buchstaben = Buchstaben + 1
print ' '
print ' '
print 'Das Wort hat', Buchstaben, 'Buchstaben.'
print 'Sie haben noch', Versuche, 'Versuche.'
print ' '
#Erstellung der Variable zur Ausgabe der richtig erratenen Buchstaben
Wort_V = Buchstaben * ['_',]
#Beginn der Abfrage für das ausgewählte Wort
while Versuche > 0:
#Eingabe
print ' ',
Eingabe = raw_input('Geben Sie einen Buchstaben ein:')
#Ermittlung wie oft der eingegebene Buchstabe vorkommt
Anzahl_E = Wort.count(Eingabe)
#Abgleich, ob der Buchstabe vorkommt
if Eingabe in Wort:
for letter in Wort:
if Eingabe == Wort[Position_B]:
Position_B_1 = Position_B
if Anzahl_E > 1:
for i in range(Anzahl_E - 2):
Position_B_4 = Position_B_4, '_'
Position_B = Position_B + 1
for i in range(Anzahl_E):
while Position_B_4[Stelle_2] != Position_B:
if Eingabe == Wort[Position_B]:
Position_B_4[Stelle] = Position_B
Position_B = Position_B + 1
Stelle = Stelle + 1
else:
Position_B = Position_B + 1
Stelle_2 = Stelle_2 + 1
Position_B = 0
continue
else:
Position_B = Position_B + 1
Position_B = 0
#Ausgabe der richtigen Buchstaben
Wort_V[Position_B_1] = Eingabe
if Anzahl_E > 1:
for i in range(Anzahl_E):
Wort_V[Position_B_4[Stelle_3]] = Eingabe
Stelle_3 = Stelle_3 + 1
Loesung = Loesung - Anzahl_E + 1
for letter in Wort:
print Wort_V[Position_B_3],
Position_B_3 = Position_B_3 + 1
Position_B_3 = 0
#Herabsetzen der zur Lösung benötigten richtigen Buchstaben
Loesung = Loesung - 1
#Falls der Buchstabe nicht vorkommt
else:
#Überprüfen, ob der Buchstabe bereits falsch geraten wurde
if Eingabe in Falsch_B:
print ' '
print 'Sie hatten diesen Buchstaben bereits.'
print ' '
continue
#Fall nicht, Anzahl der versuche herab setzen
else:
print ' '
print 'Falsch'
Versuche = Versuche - 1
print 'Sie haben noch', Versuche, 'Versuche.'
print ' '
Falsch_B = Falsch_B, Eingabe,
#Falls alle Buchstaben richtig geraten wurden
if Loesung == 0:
print ' '
print ' '
print 'Das Wort wurde geloest.'
Punkte = Punkte + 1
print 'Sie haben', Punkte, 'Punkte.'
del Woerter[Auswahl]
print ' '
break
#Falls keine Versuche mehr übrig sind
print ' '
print ' '
print 'Sie haben verloren, da sie zu viele falsche Buchstaben geraten haben.'
hangman_turtle(laenge)