Ваш подход к поиску анаграмм вполне разумен. Сортировка слов и их сравнение — самый простой способ определить, являются ли два слова анаграммами друг друга.
Однако я думаю, что вас смущает идея параметров функции. Когда вы определяете
foo(x1, x2)
когда вызывается foo
, ожидается, что он будет вызван с двумя параметрами. Вы определяете
anagram(s1, s2)
но никогда не снабжайте его s1 и s2. Список параметров — это не список имен переменных, которые вы используете в функции — вы можете назначать новые переменные по желанию. Вместо этого это список входных данных, которые принимает функция.
поэтому anagram()
неверно. Вам нужно позвонить anagram(input1, input2)
. (Предполагая, что у вас нет значений по умолчанию, в которые я не буду вдаваться.
def isAnagram(s1, s2):
sortedWord1 = sorted(s1) # s1 is word1! (sorted instead of sort, strings are immutable)
#what should you do here?
if sortedWord1 == sortedWord2:
print("This is an anagram")
else:
print("This is not an anagram") # you forgot a closing quote!
word1 = input("Enter a string: ")
word2 = input("Enter a second string: ")
isAnagram(word1, word2)
Я немного изменил ваш код, чтобы он работал правильно. Тем не менее, я рекомендую вам немного больше прочитать о функциях, прежде чем продолжить.
Думайте о них так же, как о функциях в математике! f(x)
имеет смысл, f
, хотя и имеет смысл, вероятно, не то, что вы искали.
>>> isAnagram("anagram", "nagaram")
This is an an anagram
>>> isAnagram("anagram", "woohoo")
This is not an anagram
>>> isAnagram("a", "a")
This is an an anagram
person
vroomfondel
schedule
13.11.2013