【发布时间】:2014-04-30 13:29:04
【问题描述】:
我想获得一些关于刽子手游戏的帮助。我已经创建了这段代码,并花了很多时间尝试改进它,但我仍然无法获得正确的输出。非常感谢您的帮助!
word = choose_word(wordlist)
letters = 'abcdefghijklmnopqrstuvwxyz'
numLetters = len(word)
print numLetters
import re
def hangman(word, numLetters):
print 'Welcome to the game, Hangman!'
print 'I am thinking of a word that is', numLetters, 'letters long'
remainingGuesses = 8
print 'You have', remainingGuesses, 'guesses left.'
letters = 'abcdefghijklmnopqrstuvwxyz'
print 'Available letters:', letters
guess = raw_input("Please guess a letter:")
def filled_word(wordy, guessy):
emptyWord = ['_']*numLetters
if wordy.find(guessy) != -1:
position = [m.start() for m in re.finditer(guessy, wordy)]
for x in position:
emptyWord[x] = guessy
strWord = ''.join(emptyWord)
print 'Good guess =', strWord
else:
strWord = ''.join(emptyWord)
print 'Oops! That letter is not in my word:', strWord
filled_word(word, guess)
emptyWord = ['_']*numLetters
print 'emptyWord =', ['_']*numLetters
while '_' in emptyWord and remainingGuesses>0:
remainingGuesses -= 1
print 'You have', remainingGuesses, 'guesses left'
letters = 'abcdefghijklmnopqrstuvwxyz'
def unused_letters(letters):
letters = 'abcdefghijklmnopqrstuvwxyz'
unusedLetters = str(list(letters).remove(guess))
letters = unusedLetters
return unusedLetters
letters = unused_letters(letters)
print 'Available letters:', letters
guess = raw_input("Please guess a letter:")
if word.find(guess) != -1:
position = [m.start() for m in re.finditer(guess, word)]
for x in position:
emptyWord[x] = guess
strWord = ''.join(emptyWord)
print 'Good guess ='+strWord
emptyWord = list(strWord)
else:
strWord = ''.join(emptyWord)
print 'Oops! That letter is not in my word:', strWord
print hangman(word, numLetters)
print '___________'
print 'Congratulations, you won!'
所以问题是当我运行它时,代码运行平稳,直到从第二次猜测开始,我得到Available letters = None 而不是特定的字母。
另外,我猜确实出现在单词中的字母没有被存储。即在猜测 1 中,代码返回单词(例如)“d____”,但在猜测 2 中,在猜测“e”时,代码返回单词“e_”而不是“d_e__”。是不是因为变量的赋值?局部变量和全局变量?对此我感到很困惑。
非常感谢您的帮助!非常感谢! :)
【问题讨论】:
-
您是否尝试过使用 pdb/ipdb 单步执行您的代码以查看何时发生变化?
-
对不起,我真的是 python 新手,你用 pdb/ipdb 来查看什么时候发生变化是什么意思?