山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

独学プログラマー Python言語の基本から仕事のやり方まで その9

第10章 知識を一つにまとめる

これまでに学んだ内容を元にハングマンという言葉当てゲームを作ります。

コードでは当てられた文字を"$"で置き換えるので、catが正解のとき、tと入力したあとに"$"と入力すると、表示される文字が"$"に置き換えられてしまいます。なので、エスケープ処理のようなものを記述する必要があると思いました。

コード

import random

def hangman(word):
    wrong = 0
    stages = ["",
              "______      ",
              "|           ",
              "|     |     ",
              "|     0     ",
              "|    /|\    ",
              "|     |     ",
              "|    /  \   "
              ]
    rletters = list(word)
    board = ["_"] * len(word)
    win = False
    print("ハングマンへようこそ!")
    while wrong < len(stages) - 1:
        print("\n")
        msg = "1文字を予想してね>"
        char = input(msg)
        if char in rletters:
            cind = rletters.index(char)
            board[cind] = char
            rletters[cind] = '$'
        else:
            wrong += 1
        print(" ".join(board))
        e = wrong + 1
        print("\n".join(stages[0:e]))
        if "_" not in board:
            print("あなたの勝ち!")
            print(" ".join(board))
            win = True
            break
    if not win:
        print("\n".join(stages[0:wrong+1]))
        print("あなたの負け!正解は {}.".format(word))

words = ["dog", "cat", "orange", "apple", "grape"]
key = words[random.randint(0, len(words) - 1)]
hangman(key)

感想

基本的なPythonの使用を学んだので、Pythonを使って何か書きたいと思うんですが、良い題材が見つからないんですよね。機械学習を学ぶときに使うと思います。