我正在撰寫代碼來檢查兩個單詞是否是彼此的字謎。但是當我運行這個程式時,它告訴我“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")
uj5u.com熱心網友回復:
你必須抓住另一面if i in my_list:——如果我不存在,那么我們知道它不是一個字謎,我們可以擺脫那里的功能。
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”是“anagram”的字謎- 在您的腳本中,額外的空格將被標記)。在使用時使其不區分大小寫也可能是一個好主意。
string1 = string1.replace(' ','').lower()
uj5u.com熱心網友回復:
您的代碼僅檢查 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438482.html
上一篇:AppScript:被呼叫的函式在放入回圈時沒有回傳值作為引數?
下一篇:打造“拋硬幣”游戲
