2017-06-12 4 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' 

に一致するこれら二つの文字列ではありませんはなぜ、forループを使用して文字列を比較しようとしているの後の文字列に 結果=「」</p> <p>を比較した後、結果を格納する新しい変数を作成

このコードは(最後の最新の呼び出し) トレースバックを返す何らかの理由
for letter in str1: 
for letter in str2: 
    if letter(str1) != letter(str2): 
     result = result + letter 
     print (result) 

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

TypeError: 'str' object is not callable

2つの文字列が一致しない理由を理解していませんか?

+1

あなたは2つの文字列変数 'letter'を再利用している....悪い習慣は、これを使用すると、文字列オブジェクトに(括弧)関数を呼び出している文字列ではない機能 – depperm

+0

です... –

+4

最初のコードセグメントで 'str1'と' str2'がマッチしない理由を知りたいのであれば、7文字とZ文字が含まれているからです。Splitは何も役に立ちません(文字列をリストに変換することを除く)分割する文字列には何もないからです。 – eewanco

答えて

1

ループでは、変数letterは、現在の文字を含む文字列です。それがエラーの原因です(文字列は関数ではなく、そのように呼び出すことはできません)。

また、両方のループに同じ変数名を使用します。内部ループは、外側ループからletterの内容を上書きします。異なるの変数を使用する必要があります。それからあなたは直接比較します。同様に:

for letter1 in str1: 
    for letter2 in str2: 
     if letter1 == letter2: 
      # Do something here ... 
関連する問題