创建一个字谜检查器

Creating an anagram checker

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

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

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

anagrams('silent','silent')

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

检查字符串是否不同:

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 而不是排序:

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'))
def anagrams( string1, string2 ):
  if sorted(string1.lower()) == sorted(string2.lower()) and string1.lower() != string2.lower():
    return True
  else:
    return False

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