给定条件

时间:2017-11-01 22:48:47

标签: python function

如果我们有某些条件要履行

a is the opposite of b
c is the opposite of h
l is the opposite of r

与字符串acl相反的是bhr 你们是否认为你可以帮我弄清楚如何构建一个函数,当给定两个字符串时会返回一个布尔值,让我知道给定的字符串是否相反。例如输入:opposite("ahl","bcr")将返回True("ahl","bbr")将返回False

2 个答案:

答案 0 :(得分:1)

我会像字符串比较一样,除了对于每个字符,都会有一个查找表来获取翻译的值,如下所示:

lookup = {
    'a': 'b',
    'c': 'h',
    'l': 'r'
}


def opposite(one, two):
    count = 0
    if len(one) != len(two):
        return False
    for i in one:
        if (lookup[i] != two[count] ):
            return False
        count += 1
    return True

if __name__ == '__main__':
    print opposite('acl', 'bhr')

答案 1 :(得分:0)

如果您有查找表,那么这是一个单行。

lookup = {
    'a': 'b',
    'c': 'h',
    'l': 'r'
}


def opposite(str1, str2):
    return [ lookup[c] for c in str1] == [ c for c in str2 ]

根据实际情况(您是否知道第一个字符串仅包含" acl"以及第二个仅包含其对立面),您可能需要进行双向查找:

lookup = {
    'a': 'b',
    'c': 'h',
    'l': 'r',
    'b': 'a',
    'h': 'c',
    'r': 'l'
}

如果您想在输入中存在无效字符时引发异常,则可以更改该功能:

def opposite(str1, str2):
    return [ lookup[c] for c in str1] == [ lookup[lookup[c]] for c in str2 ]