python - 创建一个字谜检查器
问题描述
所以我已经能够创建以下程序来比较两个字符串,看看它们是否是彼此的字谜。
def anagrams( string1, string2 ):
if sorted(string1.lower()) == sorted(string2.lower()):
return True
else:
return False
但是,我的问题是,如果两个输入字符串完全相同,我不希望返回 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而不是 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'))
推荐阅读
- javascript - 如何加速大量画布渲染
- ios - 子类中的空白函数是否符合自定义协议?
- python - 传递登录凭据时,在iis上运行的python烧瓶网站未连接到sql数据库
- javascript - 在 node.js 中使用 Fetch API 记录 HTTP 错误
- javascript - Mongoose 和多次保存错误处理
- azure - Azure Blob 存储 CDN 在不存在时询问 favicon.ico?
- python - 给定等边三角形的 2D 角坐标的 3D 法线向量
- sql-server - 追踪可能的权限问题
- javascript - React.js:如何将道具传递给组件?
- django - 如何正确验证 Django 通用视图中的用户条目