2016-06-20 15 views
0

アイソグラムは、連続するかまたは連続しない繰り返し文字がない単語です。文字のみを含む文字列がアイソグラムかどうかを判断する関数を実装します。空の文字列がアイソグラムであると仮定します。大文字小文字を無視します。Python関数をチェックしてコードワードからアイソグラムを決定する

is_isogram("Dermatoglyphics") == true 
is_isogram("aba") == false 
is_isogram("moOse") == false # -- ignore letter case 

は、ここに私のコードです:

def is_isogram(string): 
    string = string.lower() 
    for char in string: 
     if string.count(char) > 1: 
      return False 
     else: 
      return True 

を、私はそれが失敗したテストコードTest.assert_equals(is_isogram("moOse"), False, "same chars may not be same case")を実行しようとしたが、私が考えたとき、私は小文字にすべてを変換しました。助けてもらえますか?

+0

あなたの関数が返ってくるときを考えてみましょう。 '' moose''にはいくつの '' m''がありますか? – jonrsharpe

+0

あなたのコードは最初の文字だけを試します。問題が2番目のものにあるのはmooseです。 – Whitefret

+0

"for"を使うと、文字列のすべての文字をチェックすると思いますか? –

答えて

2

これを試してください:あなたのコードで

def is_isogram(string): 
    string = string.lower() 
    for char in string: 
     if string.count(char) > 1: 
      return False 
    return True 

is_isogram("moose")が呼び出されたとき、それは最初の文字の(「M」)カウントがだから、Trueを返します1より大きいではないことがわかります。 return文にヒットすると、残りの文字列の実行が停止します。だから、実際にはreturn Trueをfor-loopの後に書くだけで、関数が文字列全体をチェックするようにする必要があります。

ただし、文字のカウントが1より大きい場合は、条件が成立しない1つの点が見つかると、それ以上チェックポイントがないため、Falseを返して実行を停止します。

+0

それは働いた!ありがとうございました! –

1

setsはどうですか?

def is_isogram(s): 
    s = s.lower() 
    return len(set(s)) == len(s) 

print is_isogram("Dermatoglyphics") 
print is_isogram("aba") 
print is_isogram("moOse") 
print is_isogram("") 

この出力:

のセットの長さは、元の文字列の長さと異なっていないであろうように、 Trueとして返すようにisogramsを引き起こして、重複する文字を削除しますセットに文字列をキャスト
True 
False 
False 
True 
+0

これは私のために新しく、私は学んだ、ありがとう! –

+0

心配なし、gl! – Bahrom

0

アイソグラムを定義しましょう: ウィキペディアによるアイソグラムは、の文字が複数回出現する単語です。 check here for more about an isogram

だけ手紙 私はこのコードを書いて、それが私の作品思い出さ:NB

def is_isogram(argument): 
    print(len(argument)) 
    if isinstance(argument,str): 
     valeur=argument.lower() 
     if not argument: 
     return False 
     else: 
     for char in valeur: 
      if valeur.count(char)>1 or not char.isalpha(): 
       return False 
     return True 
    else: 
     raise TypeError("need a string ") 

を:隠されたテストは、文字列内の文字がアルファであるかどうかをチェックしなければならないという事実であります文字az、これを追加すると全てのhiddensテストに合格します このヘルプがあれば

関連する問題