我已经完成了使用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 _! 我该如何解决这个问题?非常感谢!
答案 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查找字符串中所有字母的出现,并将它们放在一个列表中。然后我使用该列表将这些索引处的下划线切换为输入字母。