如何在Python中测试翻译对称性?

cha*_*shi -3 python

我们从用户那里获得两个定义映射(字符转换)的字符值,例如'a' -> 'p'.我们如何测试其他字符串对,以查看字符串中的所有字符是否保持相同的映射/转换.例如:

'abcd', 'pqrs' returns True
'aaa', 'ppp' returns True
'acb', 'pqr' returns False
'aab', 'pqr' returns False
Run Code Online (Sandbox Code Playgroud)

cdl*_*ane 5

我们想确认字符从一个字符串到另一个字符串的偏移(移位)是一致的.确保目标字符串长度相同; 计算偏移量和使用all()与生成器表达式组合,以确保逻辑在第一次未命中时完成(如果有),而不是继续检查:

def test(first, second, third, fourth):

    if len(third) != len(fourth):
        return False

    offset = ord(first) - ord(second)

    return all((ord(x) - ord(y)) == offset for x, y in zip(third, fourth))

>>> test('a', 'p', 'abcd', 'pqrs')
True
>>> test('a', 'p', 'aaa', 'ppp')
True
>>> test('a', 'p', 'acb', 'pqr')
False
>>> test('a', 'p', 'aab', 'pqr')
False
Run Code Online (Sandbox Code Playgroud)