2017-05-05 4 views
0

Ich möchte nach bestimmten Zeichen in einer Liste suchen. Zum Beispiel string_list = ['sasasd']; Ich möchte nach 'sa' suchen. Die lineare Funktion gibt True zurück, aber ich habe es viele Male versucht. Es kann nicht True zurückgeben.Wie zur Implementierung lineare Suche in String-Klasse 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

Sie sollten auch prüfen, warum die Verwendung von veränderlichen Argumenten als Standardwerte eine schlechte Idee ist! – chatton

Antwort

0

Sie haben ein paar Probleme in Ihrem Code.

str_value ist eine Liste und Sie initialisieren den Wert des Klassenattributs wie folgt: self.value = str_value. Wenn Sie also den Wert ['dasdasd'] eingeben, haben Sie eine Liste mit einem String-Element.

Wenn der m Variable deklariert, m = len(self.value), berechnen Sie die Anzahl der Elemente aus dieser Liste NICHT die Anzahl der Zeichen aus dem String-Wert in der Liste (m = len(['dasdasd']) = 1).

Auch die Suche nach der target_value Zeichenfolge innerhalb der self.value Zeichenfolge ist falsch.

Quick Fix den aktuellen Code zu beheben:

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) 

getestet und es gibt Wahr.

+0

Ich benutze nur len(), weil mein Lehrer mir nicht erlaubt, eingebaute Funktion zu verwenden. Er erlaubt nur len() zu verwenden. – Alibobo

+0

Ok, aber was ich meinte ist, dass Sie 'len()' falsch benutzen. Sie sollten es wie 'len (self.value [0])' nennen, wenn Sie die Anzahl der Zeichen aus der Zeichenfolge innerhalb der Liste erhalten möchten. – Valy