Я надеюсь, что этот запрос является законным.
Я беру курс программирования на python для инженеров, так что я немного новичок в этом бизнесе.
во всяком случае, в моей домашней работе меня попросили написать функцию с получением двух строк и проверить, является ли одна (перестановка / анагрма) другой. (что означает, что они оба имеют одинаковые буквы и одинаковое количество появлений для каждой буквы)
Я нашел здесь несколько хороших кодов при поиске, но я до сих пор не понимаю, что не так с моим кодом (и мне важно знать о процессе обучения).
мы получили тестовый файл, который должен проверить наши функции, и он выдал мне эту ошибку:
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
Кто-нибудь знает, как это исправить?
Спасибо!