关于我的这个刽子手程序,我有一个问题。当我猜一个单词(" 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"
答案 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_