Hangman - 找到2个字符的python

时间:2014-03-09 21:59:41

标签: python indexing

我已经完成了使用Python制作Hangman程序的任务。他是我迄今为止所做的:

newList = []
f = open('words.txt','r')
for i in range(120):
    wlist=f.readline()
    newList.append(wlist)
print newList
print len(newList)

import random
a=(random.choice(newList))
c=len(a)-1
print a
e='_ ' * c
print "I'm thinking of the", c, "- letter word:", e
b=raw_input("Make a choice: ")

s=list(e)
if b in a:
    p=a.index(b)
    s[p*2]=b
    print p
    print ''.join(s)

问题是,如果单词有两个或多个相同的字母(例如:位置),并且用户猜出字母o它将出现_ o _ _ _ _ _ _而不是_ o _ _ _ _ o _! 我该如何解决这个问题?非常感谢!

1 个答案:

答案 0 :(得分:1)

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

a="position"
print (a)
c=len(a)

e = '_ ' * c
print ("I'm thinking of the", c, "- letter word:", e)
b = raw_input("Make a choice: ")

s=list(e)
if b in a:
    indx = findIndexes(a,b)
    for i in indx:
        s[i*2]=b
        print (i)
    print (''.join(s))

输入o的输出:

position
I'm thinking of the 8 - letter word: _ _ _ _ _ _ _ _ 
Make a choice: o
1
6
_ o _ _ _ _ o _ 

输入n的输出:

position
I'm thinking of the 8 - letter word: _ _ _ _ _ _ _ _ 
Make a choice: n
7
_ _ _ _ _ _ _ n

由于我没有你的txt,我自己分配了a

关于代码,我定义了一个函数,它使用enumerate查找字符串中所有字母的出现,并将它们放在一个列表中。然后我使用该列表将这些索引处的下划线切换为输入字母。