[英]How do i fix my code to check if two words are anagrams
我正在编写代码来检查两个词是否是彼此的字谜。 但是当我运行这个程序时,它告诉我“tacocat”和“tacocatt”是彼此的变位词,而它们不是。 我找不到问题所在。 请帮助我是新来的
#How do you check if two strings are anagrams of each other?
def is_anagram(string1, string2):
my_list = []
for i in string1:
my_list.append(i)
for i in string2:
if i in my_list:
my_list.remove(i)
if (not my_list):
print("It is an anagram")
else:
print("No it is not an anagram")
is_anagram("tacocat", "tacocatt")
你必须抓住if i in my_list:
- 如果 i 不存在,那么我们就知道它不是一个字谜,我们可以从那里自己离开 function。
for i in string2:
if i in my_list:
my_list.remove(i)
else:
print("No it is not an anagram")
return
另外,我认为你需要在开始比较之前去掉 function 开头的任一字符串中的空格,因为我相信那些不算数(例如:“nag a ram”是“anagram”的变位词- 在您的脚本中,多余的空格将被标记)。 让它在使用时不区分大小写也可能是个好主意。
string1 = string1.replace(' ','').lower()
您的代码仅检查 string1 是否是 string2 的子集。 您还需要 string2 的子集 string1
def is_anagram(string1, string2):
my_list = []
my_list2= []
for i in string1:
my_list.append(i)
for i in string2;
my_list2.append(i)
for i in string2:
if i in my_list:
my_list.remove(i)
for i in string1:
if i in my_list2:
my_list2.remove(i)
if (not (my_list and my_list2)):
print("It is an anagram")
else:
print("No it is not an anagram")
is_anagram("tacocat", "tacocatt")
一个更简单的方法是
def is_anagram(str1,str2):
a=list(str1)
b=list(str2)
a.sort()
b.sort()
return a == b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.