1

我编写了这个程序,但在将它与我编写的另一个程序集成时遇到了麻烦。我相信这个程序的编写方式给我带来了困难。任何有关不同方法的建议将不胜感激。

该程序接受两个字符串,并确定它们是完全匹配、相差一个字符,还是相差一个字符以上。如果它们完全匹配或相差一个字符,则返回 True;如果它们相差一个以上的字符,则返回 false。

import string

def similarstrings():
    print "This program will determine whether two strings differ"
    print "by more than one character. It will return True when they"
    print "are the same or differ by one character; otherwise it will"
    print "return False"
    str1 = raw_input("Enter first string:")
    str2 = raw_input("Enter second string:")
    str1 = ' '.join(str1)
    str2 = ' '.join(str2)
    strL1 = string.split(str1, " ")
    strL2 = string.split(str2, " ")
    x = 0
    for i in range(len(strL1)):
        if strL1[i] == strL2[i]:
            x = x + 1
        else:
            x = x
    if x >= len(strL1) - 1:
        print True
    else:
        print False
4

2 回答 2

2

这种方法仅适用于 gnibbler 指出的一组受限输入 - 您可以尝试使用内置的 difflib 库来查找字符串之间的相似性。

>>> import difflib
>>> s1 = "some string"
>>> s2 = "same string"
>>> difflib.SequenceMatcher(None, s1, s2).ratio()
0.9090909090909091

有关上述(或相关方法)的更多详细信息,您可以参考此堆栈溢出问题

于 2013-02-26T00:20:06.670 回答
1

不知道相差 1 个字符是什么意思。您的代码似乎假设字符串的长度相同。如果是这样,这应该工作

def similarstrings(str1, str2):
    return sum(i != j for i, j in zip(str1, str2)) <= 1
于 2013-02-26T00:10:04.410 回答