繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM