刽子手 - 复制字符

时间:2012-11-25 01:38:40

标签: python-2.7

关于我的这个刽子手程序,我有一个问题。当我猜一个单词(" o')右边的一个单词("好")有重复时,它&# 39; s仅针对第一个索引进行揭示,因为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"  

2 个答案:

答案 0 :(得分:0)

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

    if x1 < 0:
        break

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

这样的事情应该有效。没有测试过,但这应该是正确的逻辑。

答案 1 :(得分: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。我们当前的'猜测'字符串看起来像____,我们知道我们需要用o替换索引位置1和2。由于猜测字符串和目标字具有相同的长度(因为它们应该是相同的单词),一个简单的解决方案是用枚举迭代实际的单词,如果字母是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_