首页 > 解决方案 > 创建一个字谜检查器

问题描述

所以我已经能够创建以下程序来比较两个字符串,看看它们是否是彼此的字谜。

def anagrams( string1, string2 ):
    if sorted(string1.lower()) == sorted(string2.lower()):
        return True
    else:
        return False

但是,我的问题是,如果两个输入字符串完全相同,我不希望返回 True 值。例如:

anagrams('silent','silent')

这输出 True 但我不希望它这样做,我应该进行哪些更改来实现它?

标签: pythonfunctionif-statementconditional-statementsanagram

解决方案


只需检查字符串是否不同:

def anagrams(string1, string2):
    if sorted(string1.lower()) == sorted(string2.lower()) and string1.lower() != string2.lower():
        return True
    else:
        return False

result = anagrams('silent', 'silent')
print(result)

输出

False

您可以使用Counter而不是 sorted:

from collections import Counter


def anagrams(string1, string2):
    if string1.lower() != string2.lower() and Counter(string1.lower()) == Counter(string2.lower()):
        return True
    else:
        return False

print(anagrams('silent', 'silent'))
print(anagrams('silent', 'sitlen'))

输出

False
True

更新

正如@RoadRunner 所建议的,你可以这样做:

from collections import Counter


def anagrams(string1, string2):
    ls1, ls2 = string1.lower(), string2.lower()
    return ls1 != ls2 and Counter(ls1) == Counter(ls2)

print(anagrams('silent', 'silent'))
print(anagrams('silent', 'sitlen'))

推荐阅读