2017-06-12 3 views
-2
if __name__ == '__main__': 

    str1 = str('exon_PF3DZ_0100100'.split()) 
    str2 = str('exon_PF3D7_0100100'.split()) 

    if str1 == str2: 
     print 'True' 
    else: print 'False' 

dann eine neue Variable zu schaffen Anpassung das Ergebnis zu speichern, nachdem die Saiten Ergebnis Vergleich = ‚‘Warum sind nicht diese beiden Saiten

danach versucht, die Saiten for-Schleife ein vergleichen

for letter in str1: 
for letter in str2: 
    if letter(str1) != letter(str2): 
     result = result + letter 
     print (result) 

Aus irgendeinem Grund dieser Code gibt Traceback (jüngste Aufforderung zuletzt):

if letter(str1) != letter(str2): 

TypeError: 'str' object is not callable

Ich verstehe nicht, warum die zwei Saiten nicht übereinstimmen?

+1

Sie Wiederverwendung der Variable 'letter' von zwei Strings .... schlechte Praxis, ist dies eine Zeichenfolge keine Funktion – depperm

+0

Sie den Aufruf einer Funktion (Klammern) auf einem String-Objekt ... –

+4

Wenn Sie wissen wollen, warum 'str1' und' str2' in Ihrem ersten Code-Segment nicht übereinstimmen, liegt das daran, dass eins sieben enthält und eins den Buchstaben Z enthält. Split macht nichts besonders nützlich (außer die Zeichenfolge in eine Liste umzuwandeln) weil in der Zeichenfolge nichts enthalten ist. – eewanco

Antwort

1

In den Schleifen ist die Variable letter eine Zeichenfolge, die das aktuelle Zeichen enthält. Das ist die Ursache Ihres Fehlers (Zeichenfolgen sind keine Funktionen und können nicht als solche aufgerufen werden).

Sie verwenden auch denselben Variablennamen für beide Schleifen, wobei die innere Schleife den Inhalt von letter aus der äußeren Schleife überschreibt. Sie müssen zwei verschiedene Variablen verwenden. Das vergleichst du dann direkt. Wie:

for letter1 in str1: 
    for letter2 in str2: 
     if letter1 == letter2: 
      # Do something here ... 
Verwandte Themen