2017-05-05 47 views
0

我想搜索字符串列表中的特定字符。例如,string_list = ['sasasd'];我想搜索'sa'。線性函數將返回True,但我嘗試了很多次,它不能返回True。如何在字符串類中執行線性搜索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是一個列表,您可以像這樣初始化類屬性的值:self.value = str_value。所以,當你給它的價值['dasdasd'],你最終有一個字符串元素的列表。

當聲明的m個可變,m = len(self.value),則計算元件的數目從該列表NOT從列表(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