アナグラムを見つけるためのあなたのアプローチは完全に合理的です。単語を並べ替えて比較することは、2 つの単語が互いにアナグラムであるかどうかを確認する最も簡単な方法です。
ただし、関数パラメーターの考え方に混乱していると思います。定義すると
foo(x1, x2)
が呼び出されるときfoo
、2 つのパラメーターで呼び出されることが期待されます。あなたが定義する
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