def find_pos(str,tobefind):
l=len(tobefind)
def xiter():
for i,c in enumerate(str):
if c==tobefind[0] and str[i:i+l]==tobefind:
yield i
return list(xiter())
另外用了这个小程序写了一个小游戏
猜4个字母的单词
根据提示输入:
def isWordGuessed(secretWord, lettersGuessed):
for char in secretWord:
if char in lettersGuessed:
continue
else:
return False
return True
def getGuessedWord(secretWord, lettersGuessed):
s=''
import string
for char in secretWord:
if char in lettersGuessed:
s+=char
else:
s+='_ '
return s
def getAvailableLetters(lettersGuessed):
s=''
import string
for char in string.ascii_lowercase:
if char in lettersGuessed:
continue
else:
s+=char
return s
def find_pos(str,tobefind):
l=len(tobefind)
def xiter():
for i,c in enumerate(str):
if c==tobefind[0] and str[i:i+l]==tobefind:
yield i
return list(xiter())
def hangman(secretWord):
print 'Loading word list from file...'
print '%s words loaded.'%(len(secretWord))
print 'Welcome to the game, Hangman!'
print 'I am thinking of a word that is 4 letters long.'
mistakesMade=8
import string
availableLetters=string.ascii_lowercase
s='____'
print '-------------'
while '_' in s and mistakesMade:
print 'You have %d guesses left.'%mistakesMade
print 'Available letters: %s'%availableLetters
c=raw_input('Please guess a letter:')
if availableLetters.find(c)==-1:
print 'Oops! You\'ve already guessed that letter:%s',s
elif c in secretWord:
#c在secretWord中的所有位置
li=find_pos(secretWord,c)
ss=s
for i in li:
if i:
s=ss[:i]
else:
s=''
s+=c
s+=ss[i+1:]
ss=s
ss=availableLetters
availableLetters=ss[:ss.find(c)]
availableLetters+=ss[ss.find(c)+1:]
print 'Good guess:%s'%s
else:
print 'Oops! That letter is not in my word:%s'%s
mistakesMade-=1
s2=availableLetters
b=s2.find(c)
availableLetters=s2[:b]
availableLetters+=s2[b+1:]
print '-------------'
if mistakesMade:
print 'Congratulations, you won!'
else:
print 'Sorry, you ran out of guesses. The word was else. '
hangman('tatk')