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

2024-05-08 04:40:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

'abcd', 'pqrs' returns True
'aaa', 'ppp' returns True
'acb', 'pqr' returns False
'aab', 'pqr' returns False

Tags: 字符串用户falsetrue定义字符returnsppp
2条回答

您可以通过从用户中减去第一个ASCII值来完成此操作。在

'abcd' = [97 98 99 100] subtract it by 'a' give you [0 1 2 3].
'pqrs' = [112 113 114 115] subtract it by 'p' give you [0 1 2 3].

所以如果减法的结果是相同的,返回True

我们要确认字符从一个字符串到另一个字符串的偏移量(偏移量)是一致的。确保目标字符串的长度相同;计算偏移量并使用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

相关问题 更多 >