1

私のこの絞首刑執行人プログラムに関して 1 つ質問があります。重複している単語 (「良い」) の文字 ('o') 権利を推測すると、list.index(value) として最初のインデックスに対してのみ明らかにされています。その値の重複がある場合でも、1 つのインデックスのみを返します。重複したすべての文字を同時に明らかにしたい場合、何を変更または追加する必要がありますか?

プログラムに期待することは次のとおりです。

文字を推測してください: l >>> _oo_

ありがとう。

the_word="good"
#print the_word
wLen=len(the_word)
u='_'*wLen
counter=0
while counter!=12 and wLen!=0:
    counter=counter+1
    print u
    g=raw_input("Guess the letter: ")
    p=list(the_word)
    x1=the_word.find(g)
    if x1 >=0:
        u1=list(u)
        u1[x1]=g
        u=''.join(u1)
        wLen=wLen-1

if wLen==0:    
    print "Congratulation!!!you have guessed the word"
    print "The word was",the_word

else:
    print "sorry u loose"  
4

2 に答える 2

0
while (true):
    x1=the_word.find(g)

    if x1 < 0:
        break

    u1=list(u)
    u1[x1]=g
    u=''.join(u1)
    wLen=wLen-1

このようなものがうまくいくはずです。テストしていませんが、正しいロジックである必要があります。

于 2012-11-25T01:45:39.143 に答える
0

これが課題である場合、うまくいけば意味のあるより単純な解決策に焦点を当てます. ターゲットの単語がわかっているので、それから呼び出された関数を使用してenumerate、すべての文字のインデックス位置を見つけることができます。

In [31]: word = 'good'

In [32]: for index, letter in enumerate(word):
   ....:     print index, letter
   ....:
0 g
1 o
2 o
3 d

これを知っているので、ユーザーが入力したとしましょうo。現在の「推測」文字列は のよう____になり、インデックス位置 1 と 2 を に置き換える必要があることがわかっていoます。推測文字列とターゲット単語は同じ長さなので (同じ単語であると想定されているため)、単純な解決策の 1 つは、enumerate を使用して実際の単語を反復処理することですo。単語内の同じインデックス位置guessingをその文字に置き換えます。例えば:

In [33]: word = 'good'

In [34]: guess_list = list('_' * len(word))

In [35]: g = raw_input('Guess a letter: ')
Guess a letter: o

In [36]: for index, letter in enumerate(word):
   ....:     if letter == g:
   ....:         guess_list[index] = letter
   ....:

In [37]: print ''.join(guess_list)
_oo_
于 2012-11-25T01:58:10.847 に答える