2016-04-02 13 views
0

私はこれを理解しようと困惑しています。私はPython 3でかなり典型的なハングマンゲームを構築しています。それは、プレーヤーが無作為に生成された単語の中に手紙を入力する場合を除き、すべてうまくいっています。誰かが私が間違っていることにいくつかの光を当てることができますか?あなたは常に最初に見つかったマッチを返し.index()を使用しているPython Hangman game - リスト内の同じ値の複数のインスタンスを置き換える方法は?

def reveal_letter(player_guess, mystery_word, word_update, blank_list): 
mys_list = list(mystery_word) 
    for item in mys_list: 
     if str(player_guess) == item: 
      blank_list[mys_list.index(str(player_guess))] = str(player_guess) 
    return blank_list 

答えて

0

:ここに私の関数です。 [][0] = NoneIndexErrorを上げること

def reveal_letter(player_guess, mystery_word, word_update, blank_list): 
    for index, item in enumerate(mystery_word): 
     if player_guess == item: 
      blank_list[i] = player_guess 

    return blank_list 

注:あなたはここにenumerate()を使用することができます。 blank_listが実際に空白のリストである場合は、割り当ての代わりにblank_list.append(player_guess)を使用し、その後にelse: blank_list.append("_")を追加する必要があります。空リストでない場合は、わかりやすい名前を付けることをお勧めします。

+0

助けてくれてありがとうzondo、しかし、私はまだ最初の文字が明らかになった文字列を返すだけです。私はblank_listの中から文字列を作成する変数を追加しました。ループの中を実行すると、関数が返すアンダースコアと推測された文字が含まれるはずです。その結果、結果として得られる文字列は、ほとんどが空白になり、推測された文字が含まれます。私は何が間違っているのか分からないのですか? forループは、リスト内のすべての文字を読み込み、リスト内で一致する文字が見つかると、そのインデックス付きの文字をplayer_guess文字に置き換えます。 –

+0

'blank_list'は本当に空リストですか?そうであれば、アンダースコアを自分で追加する必要があります。そうでなければ、私の答えはうまくいくはずです。私は上記の方法を説明しました。それでも問題が解決しない場合は、トレースバックとともにpastebinにコードを投稿できますか? – zondo

+0

ハハ、申し訳ありませんが、私はとても緑です、私はトレースバックが何か分かりません。ペーストビンへのリンクがありますが、これがあなたが意味していたことを願っています。私は私の問題を与えている関数のための私の元のコードをコメントしました、私は確信して控えめなコードの残りの部分については論理的にコメントしようとしました: http://pastebin.com/fmpuwxNg ohとblank_listは空のリストではなく、文字列に連結するアンダースコアのリストです。私の考えは、リスト内のインデックスを、謎の単語の文字で構成されたリスト内の対応するインデックスに置き換え、追加された文字の下線のリストを返します。 –

関連する問題