【发布时间】:2021-06-14 15:30:00
【问题描述】:
该程序适用于带有提示的刽子手 (MIT OCW 6.0001 ps 2 )。它应该检查我到目前为止猜到的单词(这里是my_word“a_ple”)是否可以是游戏选择的单词(other_word)。因此在“a_ple”和“apple”中,因为我已经猜到了“p”,但我仍然有 index[1] 作为“_”的位置,这意味着这个词不能是 apple,并且打印的输出应该是 false
my_word="a_ple"
other_word = "apple"
import string
def match_with_gaps(my_word, other_word):
matching = False
alphabet="string.ascii_lowercase"
alphabet=list(alphabet)
if len(my_word) == len(other_word):
for i in range(len(my_word)):
if my_word[i] != "_":
for a in range(len(other_word)):
if my_word[i] == other_word[a]:
if my_word[a] != "_":
print(type(alphabet)) #to check error in alphabet
if my_word[i] in alphabet:
matching = True
else:
break
else:
break
alphabet = alphabet.remove(my_word[i])
return matching
print(match_with_gaps(my_word, other_word))
输出: 我得到一个输出作为类列表,然后在第二次迭代中我得到“无法在 NoneType 上执行删除”
我不明白我的字母表在哪一步变成了无类型。 我尝试使用字母表的克隆,但结果相同
【问题讨论】:
-
alphabet.remove(my_word[i])是就地操作。它返回None- 不要将其分配回alphabet。 -
我不明白我的字母列表在哪一步变成了无 - 你可以通过在每一步之后打印它或使用调试器来发现。
-
@MisterMiyagi 好的,所以我把它设置为 if
word[i] in alphabet_clone alphabet_clone=alphabet.remove(word[i])但现在它说 x 不在列表中 -
@mkrieger1 我尝试在每一步之后打印它,但我不明白我应该把打印命令放在哪里。生病尝试调试器的事情
标签: python