2017-05-05 8 views
0

文字列リスト内の特定の文字を検索したい。例えば、string_list = ['sasasd']; 'sa'を検索したい線形関数はTrueを返しますが、何度も試しましたが、Trueを返すことはできません。Stringクラスの線形検索の実装方法Python

class String: 
    def __init__(self, str_value = []): 
     self.value = str_value 

    def search_data(self,target_value): 
     m = len(self.value) 

     for i in range(m): 
      if self.value[i] == target_value: 
       return True 
     return False 


    value_data = ['dasdasd'] 
    my_str = String(value_data) 
    result = my_str.search_data('da') 
    print(result) 
+0

また、デフォルト値として変更可能な引数を使用するのは悪い考えです。 – chatton

答えて

0

コードにはいくつか問題があります。

str_valueはリストで、次のようにclass属性の値を初期化します:self.value = str_value。だから、あなたが値['dasdasd']を与えると、あなたは1つの文字列要素のリストを持つことになります。

メートル変数、m = len(self.value)を宣言

は、あなたがそのリスト ませからリスト( m = len(['dasdasd']) = 1)内部の文字列値から文字の数を要素の数を計算します。

また、self.value文字列内のtarget_value文字列を検索するのは間違っています。

class String: 

    def __init__(self, str_value = []): 
     self.value = str_value 

    def search_data(self, target_value): 
     # assumption here that self.value has the format: ['string'] (list with 1 string element) 
     if self.value[0].find(target_value) == 0: 
      return True 

     return False 


value_data = ['dasdasd'] 
my_str = String(value_data) 

result = my_str.search_data('da') 
print(result) 

はテストの結果、それが真の出力:現在のコードを修正する

クイックフィックス。

+0

私は先生が私が組み込みの関数を使うことを許さないので、私はlen()を使うだけです。彼はlen()だけを使うことができます。 – Alibobo

+0

しかし、私が意図したことは 'len()'を間違って使うことです。リスト内の文字列から文字数を取得する場合は、 'len(self.value [0])'のように呼び出す必要があります。 – Valy