EDIT:Pythonで.readline()が返すものは何ですか?問題をより明確にするために全体のポストの
s = "GATATATGCATATACTT"
t = "ATAT"
for i in range(len(s)):
if t == s[i:i+len(t)]:
print i+1,
したがって、上記のプログラムの目的は、DNAの短い線とDNAの長いライン(S)(をスキャンすることですt)、s上のどの位置にtが一致するかを見つける。上記のコードの出力は次のとおりです。
2 4 10#これは基本的に、文字列tが一致する文字列のインデックス番号です。上記のコードで見られるように、1を基にしたナンバリング出力を与えるのはi + 1です。
問題は、コードを変更しようとすると、ファイルを使ってsとtの値を受け取れるようにするために、readline()関数が動作していないということです。 motif.txtファイルには、各行に1つずつ、DNAの2つの文字列が含まれています。
with open('txt/motif.txt', 'r') as f:
s = f.readline()
t = f.readline()
for i in range(len(s)):
if t == s[i:i+len(t)]:
print i+1,
このコードでは、何も出力されません。しかし、私がtに変更したとき:
t = f.readline().strip()
そして、プログラムは最初の例と同じ結果を出力します。
だから私はこのことがより明確になることを願っています。私の質問は、readline()が文字列を返す場合、最初の例と同じように、例2のプログラムが動作しないのはなぜですか?
あなたのコードは本当にインデントされていますか?ここにあなたが持っているものは無効です。 – chepner
あなたの入力が何であるか( 'txt/motfi.txt'の内容)と、期待される出力が何かを示す必要もあります。 – chepner
そして、 'readline'は、指定されたファイルオブジェクトから利用可能な次のテキスト行を返します。 – chepner