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.
Ich bins wieder;
ich möchte ein Hangman-Programm schreiben. Um die Buchstaben des Wortes, dass ich vorher über random.randint zufällig bestimme und mit actual_word = word[chosen_word] abhole, in einem Array zu speichern, verwende ich folgenden Code:
Traceback (most recent call last):
File ".../hangman.py", line 13, in <module>
einzelne_buchstaben[buchstaben_word:buchstaben_word] = [actual_word[buchstaben_word]]
IndexError: string index out of range
@Dreiunddreißig: Du willst das Wort wahrscheinlich in einer Liste speichern. Der Begriff Array ist ein wenig irreführend, weil es in Python zwar auch Array-Objekte gibt, man aber für gewöhnlich mit Listen arbeitet.
`buchstaben_word` ist ganz sehr unschöner Name, einmal wegen der Mischung von Deutsch und Englisch und dann weil da anscheinend eine Zahl dran gebunden wird!? Das hätte ich jetzt nicht erwartet.
Mal angenommen das würde keine Ausnahme auslösen, dann wäre es wohl eine Endlosschleife denn die Variable in der Abbruchbedingung wird innerhalb der Schleife ja nicht verändert.
Du solltest Dir ausserdem mal die Funktionen im `random`-Modul anschauen. Auswahl eines zufälligen Elements aus einer Sequenz geht einfacher als selbst einen Index mit `randint()` beziehungsweise `randrange()` zu wählen.
Das ist total umständlich. Eine viel einfachere Lösung hat b.esser-wisser ja schon gezeigt. Kombiniert mit der passenden Funktion aus dem `random`-Modul ist das Auswählen, Zerlegen, und Zuweisen eine einzige Zeile in der nur `einzelne_buchstaben` und `word` (was wohl eher `words` heissen sollte) vorkommen und keine weiteren Hilfsnamen nötig sind.
Und das englische Wort "actual" bedeutet nicht "aktuell" sondern "tatsächlich", "wirklich", …. Ein klassischer Falscher Freund.
Du solltest auf jeden Fall den Typ von fkt genauer definieren, etwa ``ftk_int_int_to_int_add`` für eine Addition, damit die Eingabe und Ausgabetypen klar sind. *SCNR*
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack hat geschrieben:@Leonidas: Ich denke da fehlt noch was, damit man nicht vergisst, das Funktionen ja auch Objekte sind: `obj_fkt_int_int_to_int_add`.
Na aber als Praefix stoert das doch!111 Das muss ein Suffix sein
Falls es durch die Kommentare vorher nicht klargeworden sein sollte: Ungarische Notation ist für Python nicht sinnvoll (auch für viele andere Sprachen nicht, aber das ist ein anderes Thema). Stattdessen ist es sinnvoll, möglichst sprechende Bezeichner zu wählen. Aus dem Namen einer Funktion sollte sich z.B. erschließen, was sie tut, bei einer Klasse, welche Objekte damit modelliert werden usw.
Scrion hat geschrieben:Ich hoffe, du willst mit "int" am Anfang keinen Typ ausdrücken, wie etwa "integer" - dafür hättest du nämlich 2 saftige Ohrfeigen verdient, in jeder Programmiersprache. In Python hingegen bekommst du dafür 5.