这是一个问题:
给定两个单词中每个字母数相同的单词,计算出需要更改多少个字母才能从第一个单词到第二个单词.编辑距离的更复杂版本通常用于在电话和文字处理器上拼写自动校正算法以找到候选校正.
应该从用户读取这两个单词,每行一个单词.例如:
Word 1: hello
Word 2: jelly
2
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
w1 = input('Word 1: ')
w2 = input('Word 2: ')
for i in w1:
for o in w2:
print(i, o)
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
您可以尝试以下方式:
sum(c1 != c2 for c1,c2 in zip(w1,w2))
Run Code Online (Sandbox Code Playgroud)
zip(w1,w2)创建一个生成器,返回由相应的w1和的字母组成的元组w2.即:
>>> list(zip(w1,w2))
[('h', 'j'), ('e', 'e'), ('l', 'l'), ('l', 'l'), ('o', 'y')]
Run Code Online (Sandbox Code Playgroud)
我们迭代这些元组(c1分配给每个第一个字符和c2每个第二个字符)并检查是否c1 != c2.我们将满足此条件的所有实例相加以得出答案.
>>> w1 = 'hello'
>>> w2 = 'jelly'
>>>
>>> sum(c1 != c2 for c1,c2 in zip(w1,w2))
2
Run Code Online (Sandbox Code Playgroud)