2017-07-04 7 views
2

私はハングマンゲームを作っていて、リストに問題がありました。ユーザー入力がリスト内の文字のいずれかと一致する場合、そのリスト内の文字の場所が見つけられ、空白のリストのその位置に追加されます。ただし、重複する文字を含む「テレビ」などの単語は機能しません。代わりに、 "tel_vis_on"が表示されます。申し訳ありませんが、これがあいまいな投稿であれば、私はその用語を知らないのです。その部分においてHangman Game - リストに重複文字があります

+2

'letterPlace = word.index(letter)'は、その単語の_first_出現のインデックスを返します。重複している場合は使用できません。 –

答えて

4
def guess(): 
    letter = input ("Please enter a letter:") 
    if letter in word: 
     print ("Correct!") 
     letterPlace = word.index(letter) 
     answer[letterPlace] = letter 
     print (*answer) 
    else: 
     print ("Wrong!") 

    if answer == word : 
     print ("You guessed it! Well Done!") 
     #end here 
    else: 
     guess() 

from random import choice 
objects = ["computer","television"] 
word = choice(objects) 
word = (list(word)) 
wordcount = len(word) 
answer = ["_"]*wordcount 
print (*answer) 
guess() 

if letter in word: 
    print ("Correct!") 
    letterPlace = word.index(letter) 
    answer[letterPlace] = letter 

word.index(letter)は、文字の発生の指標を返します。

したがって、最初のアンダースコアのみを文字で置き換えます。

if letter in word: 
    print ("Correct!") 
    for letterPlace in (idx for idx,l in enumerate(word) if l==letter): 
     answer[letterPlace] = letter 

コードループを、それが手紙を見つけた場合、ジェネレータ式は、アンダースコアを置き換えるために、インデックスが得られます。その代わりに行います。

0

ここで問題となるのは、最初の文字のみを置き換えることです。あなたがしたい場合

def guess(): 
    letter = input ("Please enter a letter:") 
    if letter in word: 
     print ("Correct!") 
     letterPlace = [m.start() for m in re.finditer(letter, word)] 
     for index in letterPlace: 
      answer[index] = letter 
1

あなたはこれを試すことができます:すべての回出てくる交換するためには、このようなre関数を使用します。あまりにも複雑すぎるものを望まないなら、わかりやすい。

def findOccurences(s, ch): 
    return [i for i, letter in enumerate(s) if letter == ch] 

def guess(): 
    letter = input ("Please enter a letter:") 
    if letter in word: 
     print ("Correct!") 
     letterPlace = findOccurences(word,letter) 
     for i in letterPlace: 
      answer[i] = letter 
     print (*answer) 
    else: 
     print ("Wrong!") 

    if answer == word : 
     print ("You guessed it! Well Done!") 
     #end here 
    else: 
     guess() 

from random import choice 
objects = ["computer","television"] 
word = choice(objects) 
word = (list(word)) 
wordcount = len(word) 
answer = ["_"]*wordcount 
print (*answer) 
guess() 

いいゲームがあります。

関連する問題