我希望这个要求是合法的。我正在为工程师参加 Python 编程课程,所以我对这个行业有点陌生。无论如何,在我的作业中,我被要求编写一个接收两个字符串的函数,并检查一个是否是另一个的(排列/Anagrm)。(这意味着如果它们都具有完全相同的字母并且每个字母的出现次数相同)
我在搜索时在这里找到了一些很棒的代码,但我仍然不明白我的代码有什么问题(而且了解我的学习过程对我来说很重要)。
我们有一个测试文件,它假设检查我们的功能,它给了我这个错误:
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
谁知道怎么修它 ?
谢谢!