2017-01-04 12 views
0

私は以下の練習をしています: 2つの単語は、一方の文字を並べ替えてもう一方の単語を綴ることができます。 2つの文字列を取り、アナグラムの場合はTrueを返すis_anagramという関数を記述します。whileループでアナグラムを確認するには

私は関数を開発しましたが、正しく機能していないため、その理由がわかりません。誰か私が間違っていることを教えてもらえますか?どうもありがとうございました。

def isa(s,t): 
    if len(s)!=len(t): 
     print "impossible" 
    if len(s)==len(t): 
     i=0 
     while i<len(s)-1: 
      for i in s: 
       if i in t: 
        print "yay" 
       print "NO" 
+0

あなたは 'しばらく-loop'の状態で使用されている' i'を、インクリメントされていないようです。また、 'while'と' for'ループの組み合わせについては混乱しています。ちょうど 'for-loop'だけで十分です。 – Abdou

+1

'def isa(t、s)を試してください:sorted(t)== sorted(s)'を返してください。これにより、文字列は同じ順序で配置され、後で比較されます。 – Abdou

+0

ありがとう、Abdou。 whileループを削除し、いくつかの変更を適用しました。今それは動作します。ありがとうございました。 – Maya

答えて

0
import collections 

def is_anagram(s,t): 
    return collections.Counter(s) == collections.Counter(t) 
+0

迅速な回答ありがとうございますが、私が探しているものではありません。 whileループで開発した構造をデバッグして間違いを理解したいのですが – Maya

+0

@Ajlaこれを行うには、ちょうどそれをハッキングし続けることが最善の方法です。常に – Totem

関連する問題