创建一个字谜检查器
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'))
所以我已经能够创建以下程序来比较两个字符串以查看它们是否是彼此的变位词。
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'))