这是问题:
编写一个名为 test_for_anagrams 的函数,该函数接收两个字符串作为参数,这两个字符串都由字母字符组成,并返回 True 如果这两个字符串是变位词(anagrams),否则返回 False。如果一个字符串可以通过重新排列另一个字符串中的字符并使用所有原始字符串中的字符恰好一次来构造,则两个字符串是变位词。例如,字符串 "Orchestra" 和 "Carthorse" 是变位词,因为每个字符串都可以通过重新排列另一个字符串中的字符并使用其中一个字符串中的所有字符恰好一次来构造。请注意,大小写不重要,即小写字符可以被认为与大写字符相同。
我的代码:
这里的问题在于当我输入字符串
编写一个名为 test_for_anagrams 的函数,该函数接收两个字符串作为参数,这两个字符串都由字母字符组成,并返回 True 如果这两个字符串是变位词(anagrams),否则返回 False。如果一个字符串可以通过重新排列另一个字符串中的字符并使用所有原始字符串中的字符恰好一次来构造,则两个字符串是变位词。例如,字符串 "Orchestra" 和 "Carthorse" 是变位词,因为每个字符串都可以通过重新排列另一个字符串中的字符并使用其中一个字符串中的所有字符恰好一次来构造。请注意,大小写不重要,即小写字符可以被认为与大写字符相同。
我的代码:
def test_for_anagrams (str_1, str_2):
str_1 = str_1.lower()
str_2 = str_2.lower()
print(len(str_1), len(str_2))
count = 0
if (len(str_1) != len(str_2)):
return (False)
else:
for i in range(0, len(str_1)):
for j in range(0, len(str_2)):
if(str_1[i] == str_2[j]):
count += 1
if (count == len(str_1)):
return (True)
else:
return (False)
#Main Program
str_1 = input("Enter a string 1: ")
str_2 = input("Enter a string 2: ")
result = test_for_anagrams (str_1, str_2)
print (result)
这里的问题在于当我输入字符串
Orchestra
和Carthorse
时,它给出的结果是False
。同样的情况也出现在字符串The eyes
和They see
上。希望能得到帮助。
return Counter(str_1.lower()) == Counter(str_2.lower())
用到了 Python 中collections
库中的Counter
方法。 - timgebcollections
模块的一部分。 我本来想发表这个答案的,但是@timgeb比我快 :) - Andrey Rusanov