1

我有一个关于我的这个刽子手程序的问题。当我猜到一个单词(“good”)的一个字母('o')右边有重复时,它只作为 list.index(value)的第一个索引被公开即使该值有重复项,也只返回一个索引。如果我想同时显示所有重复的字母,我需要更改或添加什么。

这是我期望程序执行的操作:

猜字母: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。由于猜测字符串和目标单词的长度相同(因为它们应该是同一个单词),一个简单的解决方案是使用 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 回答