我的循环似乎迭代了第一个字母,然后打破了虽然它应该遍历secretWord中的每个字母,例如,下面的代码应该打印出“_pp_e”但是它只打印“_”。我不明白,那段代码有什么问题?
def getGuessedWord(secretWord, lettersGuessed):
'''
secretWord: string, the word the user is guessing
lettersGuessed: list, what letters have been guessed so far
returns: string, comprised of letters and underscores that represents
what letters in secretWord have been guessed so far.
'''
# FILL IN YOUR CODE HERE...
for letter in secretWord:
if letter in lettersGuessed:
return letter
else:
return '_'
print(getGuessedWord("apple", ['e', 'i', 'k', 'p', 'r', 's']))
答案 0 :(得分:2)
第一次迭代中来自函数的return
。 return
结束一个函数,然后,for
循环不会继续。
您需要在函数本身中建立返回值。通过使用列表首先保存所有字符然后将它们连接成一个字符串,最后一次构建一个字符的结果字符串:
def getGuessedWord(secretWord, lettersGuessed):
'''
secretWord: string, the word the user is guessing
lettersGuessed: list, what letters have been guessed so far
returns: string, comprised of letters and underscores that represents
what letters in secretWord have been guessed so far.
'''
guessed = []
for letter in secretWord:
if letter in lettersGuessed:
guessed.append(letter)
else:
guessed.append('_')
return ''.join(guessed)
如果您喜欢冒险,您甚至可以将其设为list comprehension,并在一行中完成所有工作:
def getGuessedWord(secretWord, lettersGuessed):
'''
secretWord: string, the word the user is guessing
lettersGuessed: list, what letters have been guessed so far
returns: string, comprised of letters and underscores that represents
what letters in secretWord have been guessed so far.
'''
return ''.join([l if l in lettersGuessed else '_' for l in secretWord])
任一版本都会产生预期的输出:
>>> print(getGuessedWord("apple", ['e', 'i', 'k', 'p', 'r', 's']))
_pp_e
答案 1 :(得分:0)
return关键字退出调用函数。这应该可以解决问题:
def getGuessedWord(secretWord, lettersGuessed):
result = ''
for letter in secretWord:
if letter in lettersGuessed:
result += letter
else:
result += '_'
return result
print(getGuessedWord("apple", ['e', 'i', 'k', 'p', 'r', 's']))
在这里,你以一个空字符串作为结果,并附加一个字母(如果它包含在列表中)或下划线(如果不是),然后返回结果字符串。