我如何修复我的代码以检查两个词是否是字谜

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