<p>在secondLoop函数中,它似乎永远递归地调用自己。这可能就是你犯错误的原因。我把递归的self调用改成了return语句,看起来效果不错。我已经评论了下面的变化,例如。。。你知道吗</p>
<pre><code>def secondLoop(enteredLetters,sentence,newSentence,lettersInWord):
print ' Player 2 '
number = len(sentence)
flag = True
while flag == True:
# changed input to raw_input
letter = raw_input("Enter letter: ")
if letter not in enteredLetters:
find = sentence.find(letter)
if find == -1:
print("Letter is not in word")
flag = False
# - changed line below to return statement below it -
#enteredLetters,newSentence,lettersInWord = secondLoop(enteredLetters,sentence,newSentence,lettersInWord)
return enteredLetters,newSentence,lettersInWord
else:
newSentence = ""
lettersInWord.append(letter)
for char in sentence:
if char in lettersInWord:
newSentence = newSentence + char
else:
newSentence = newSentence + "_ "
number = newSentence.count("_")
flag = True
elif letter in enteredLetters:
print ("The letter has been used")
flag = False
# - changed line below to return statement below it -
#enteredLetters,newSentence,lettersInWord = secondLoop(enteredLetters,sentence,newSentence,lettersInWord)
return enteredLetters,newSentence,lettersInWord
print (newSentence)
enteredLetters.append(letter)
sentence = 'TOYS'
enteredLetters = []
newSentence = '____'
lettersInWord = []
number = len(sentence)
while number != 0:
print ' Player 1 '
# changed input to raw_input
letter = raw_input("Enter letter: ")
if letter not in enteredLetters:
find = sentence.find(letter)
if find == -1:
print("Letter is not in word")
enteredLetters,newSentence,lettersInWord = secondLoop(enteredLetters,sentence,newSentence,lettersInWord)
else:
newSentence = ""
lettersInWord.append(letter)
for char in sentence:
if char in lettersInWord:
newSentence = newSentence + char
else:
newSentence = newSentence + "_ "
number = newSentence.count("_")
elif letter in enteredLetters:
print ("The letter has been used")
enteredLetters,newSentence,lettersInWord = secondLoop(enteredLetters,sentence,newSentence,lettersInWord)
print (newSentence)
enteredLetters.append(letter)
</code></pre>