我如何修复我的代码以检查两个词是否是字谜
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 不存在,那么我们就知道它不是一个变位词,我们可以从那里退出函数。
for i in string2:
if i in my_list:
my_list.remove(i)
else:
print("No it is not an anagram")
return
此外,我认为您需要在开始比较之前去掉函数开头的任一字符串中的空格,因为我认为这些不算数(例如:“nag a ram”是一个“字谜”的字谜 - 在您的脚本中,多余的空格将被标记)。让它不区分大小写也是个好主意。
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
我正在编写代码来检查两个单词是否是彼此的变位词。但是当我 运行 这个程序时,它告诉我“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 不存在,那么我们就知道它不是一个变位词,我们可以从那里退出函数。
for i in string2:
if i in my_list:
my_list.remove(i)
else:
print("No it is not an anagram")
return
此外,我认为您需要在开始比较之前去掉函数开头的任一字符串中的空格,因为我认为这些不算数(例如:“nag a ram”是一个“字谜”的字谜 - 在您的脚本中,多余的空格将被标记)。让它不区分大小写也是个好主意。
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