Seite 1 von 1

the game Hangman

Verfasst: Mittwoch 19. Dezember 2018, 10:35
von jgr
Hallo Community,

ich habe folgendes Problem ich möchte ein kleines Programm schreiben wie der Titel schon sagt nämlich Hangman.
Jetzt habe ich folgenden Code mit folgenden Fehler:

Code: Alles auswählen

"""Hangman
Standard game of Hangman. A word is chosen at random from a list and the
user must guess the word letter by letter before running aout of attempts."""

import random

def main():
    welcome = ['Welcome to Hangman! A word will chosen at random and',
               'you must try to guess the word correctly letter by letter',
               'before you run out of attemps. Good lock!'
               ]
    for line in welcome:
        print(line, sep='\n')

# setting up the play_again loop

play_again = True

while play_again:
    # setup the game loop

    words = ["hangman","maus","phillip","malena","papa","mama","sybille"
            ]

    chosen_word = random.choise(words).lower()
    player_guess = None #will hold the players guess
    guessed_letters = [] #a list of letters guessed so far
    word_guessed = []
    for letter in chosen_word:
        word_guessed.append("-")#create an ungessed, blank version of the word
        joined_word = None # joins the words in the list word_guessed

        HANGMAN=(
"""
-----
|    |
|
|
|
|
|
|
|
------
"""
    ,
""""
-----
|    |
|    0
|
|
|
|
|
|
------
Fehlermeldung Programm startet nicht friert ein:
RESTART: C:/Users/Joachim Gradischnik/Desktop/Programing/source_code/python/Mittwoch_19122018/Hagman_19122018.py

Bitte um Hilfe Danke.

lg

Joachim

Re: the game Hangman

Verfasst: Mittwoch 19. Dezember 2018, 10:39
von __blackjack__
@jgr: Das ist syntaktisch kein korrektes Python. Da solltest Du einen SyntaxError bekommen. Starte das Programm mal nicht aus einer IDE oder einem Editor, sondern direkt auf der Kommandozeile.

Re: the game Hangman

Verfasst: Mittwoch 19. Dezember 2018, 10:54
von __blackjack__
Weitere Anmerkungen: Bezüglich Editor/IDE solltest Du vielleicht nach Alternativen schauen, denn da sind so ein paar Fehler in den Texten bei eigentlich gleichen Worten, dass die Vermutung nahelegt, dass dein Editor/deine IDE keine Autovervollständigung hat, oder die zumindest nicht aktiviert wurde.

Auf Modulebene sollte nur Code stehen, der Konstanten, Funktionen, und Klassen definiert. Der Code nach der Definition der `main()`-Funktion sollte also mindestens auch noch in dieser Funktion stehen.

Du hast IMHO schon zu viel Code geschrieben, ohne ihn auszuprobieren. Man schreibt Programme nicht komplett oder auch nur halb runter, bevor man das erste mal probiert, ob das auch läuft. So etwas wie `random.choise()` hätte IMHO bereits bei einem Testlauf auffallen müssen.

Kommentare sollten nicht beschreiben was der Code macht, das steht da ja bereits als Code, sondern höchstens warum der Code das so macht. Aber auch nur sofern das nicht offensichtlich ist. Wenn man Namen mit Kommentaren erklären muss, dann sollte man erst einmal schauen ob man nicht einen besseren Namen finden kann, so dass der Kommentar überflüssig wird. Wobei `player_guess` und `guessed_letters` die Kommentare die da stehen sicher nicht brauchen. Denn das ist irgendwie offensichtlich das `guessed_letters` die geratenen Buchstaben enthalten wird.

Namen mit `None` vorbelegen sollte man nur machen wenn dieses `None` auch tatsächlich irgendwo mal benutzt werden könnte. Das sehe ich bei `player_guess` nicht. Das wird erst später im Code relevant und sollte auch erst dort eingeführt und dann gleich an die Benutzereingabe gebunden werden, und nicht an einen unnützen Dummy-Wert.

Zwischenstand:

Code: Alles auswählen

#!/usr/bin/env python3
"""Hangman

Standard game of Hangman. A word is chosen at random from a list and the
user must guess the word letter by letter before running out of attempts.
"""
import random


def main():
    welcome = [
        'Welcome to Hangman! A word will be chosen at random and',
        'you must try to guess the word correctly letter by letter',
        'before you run out of attempts. Good luck!',
    ]
    for line in welcome:
        print(line, sep='\n')

    play_again = True
    while play_again:
        words = [
            'hangman', 'maus', 'phillip', 'malena', 'papa', 'mama', 'sybille',
        ]
        chosen_word = random.choice(words).lower()
        guessed_letters = []
        word_guessed = []
        for letter in chosen_word:
            word_guessed.append('-')


if __name__ == '__main__':
    main()

Re: the game Hangman

Verfasst: Mittwoch 19. Dezember 2018, 11:05
von jgr
Hi,

danke für deinen ausführliche Antwort. Ich benutze die IDLE von Anaconda werde teile des Codes ausprobieren in der Python Shell habe den Fehler in random entdeckt. Danke.

Joachim