このリクエストが合法であることを願っています。私はエンジニア向けにPythonのプログラミングコースを受講しているので、このビジネスは少し新しいです。とにかく、私の宿題では、2つの文字列を受け取り、一方が他方の(順列/ Anagrm)であるかどうかを確認する関数を作成するように要求されました。(つまり、両方の文字がまったく同じで、各文字の出現回数が同じである場合)
iv'eは検索中にここでいくつかの優れたコードを見つけましたが、それでもコードの何が問題になっているのかわかりません(そして、勉強の過程で知っておくことが重要です)。
関数をチェックすることを想定したテストファイルを取得しましたが、そのエラーが発生しました。
Traceback (most recent call last):
File "C:\Users\Or\Desktop\תכנות\4\hw4\123456789_a4.py", line 110, in <module>
test_hw4()
File "C:\Users\Or\Desktop\תכנות\4\hw4\123456789_a4.py", line 97, in test_hw4
test(is_anagram('Tom Marvolo Riddle','I Am Lord Voldemort'), True)
File "C:\Users\Or\Desktop\תכנות\4\hw4\123456789_a4.py", line 31, in is_anagram
s2_list.sort()
NameError: global name 's2_list' is not defined
これは私のコードです:
def is_anagram(string1, string2):
string1 = string1.lower() #turns Capital letter to small ones
string2 = string2.lower()
string1 = string1.replace(" ","") #turns the words inside the string to one word
string2 = string2.replace(" ","")
if len(string1)!= len(string2):
return False
s1_list = [string1[i] for i in range(len(string1))] #creates a list of string 1 letters
a2_list = [string1[k] for k in range(len(string1))]
s1_list.sort() #sorting the list
s2_list.sort()
booli=False
k=0
for i in s1_list: #for loop which compares each letter in the two lists
if s1_list[k]==s2_list[k]:
booli = True
k=k+1
else:
booli=False
break
return booli
誰もがそれを修正する方法を知っていますか?
ありがとう!