所以,假设我有一个secretWord = 'apple'
,我有一个名为lettersGuessed
的列表。
lettersGuessed = ['a', 'e', 'i', 'k', 'p', 'r', 's']
如果已经猜到True
(即secretWord
的所有字母都在secretWord
中),则此函数返回布尔值lettersGuessed
,否则返回False
如果我写这样的话
for c in secretWord:
matched = [l for l in lettersGuessed if c == l]
if len(matched) == 0:
return False
return True
matched = [l for l in lettersGuessed if c == l]
答案 0 :(得分:3)
您正在构建列表中所有字母的列表,这些字母等于密码字的当前字符,如果该列表为空,则推断当前字符尚未被猜到。
当然要简单得多
return all(c in lettersGuessed for c in secretWord)
在我看来,这对读者来说也更加清晰。
答案 1 :(得分:0)
matched = [l for l in lettersGuessed if c == l]
c
是secretWord
中的每个字母,而l
是lettersGuessed
中的每个字母。让我们逐个检查一下;
l for l in lettersGuessed
这等于;
for l in lettersGuessed:
dosomethingwith l
因此,此部分返回l
,其他部分正在检查if c == l
,因此如果此True,则返回True
。基本上,如果l
与c
匹配。