EDIT整個後,爲了更清楚的問題:.readline()在Python中返回什麼?
s = "GATATATGCATATACTT"
t = "ATAT"
for i in range(len(s)):
if t == s[i:i+len(t)]:
print i+1,
所以上面的方案的目的是通過DNA(或多個)與DNA的短行的長行掃描( t),以便找出s上哪些位置,t匹配。上面代碼的輸出是:
2 4 10#這基本上是字符串t匹配的字符串s的索引號。但從上面的代碼可以看出,它是i + 1給出了一個基於1的編號輸出。
我遇到的問題是,當我嘗試更改代碼時,爲了使它通過文件接收s和t的值,readline()函數不適用於我。 motif.txt文件包含兩串DNA,每行一個。
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()返回一個字符串,爲什麼我的程序不像第一個例子那樣工作?
你的代碼是如何真的被縮進的;你在這裏有什麼是無效的。 – chepner
你還需要顯示你的輸入是什麼('txt/motfi.txt'的內容),以及期望的輸出是什麼。 – chepner
是的,'readline'只是返回給定文件對象中可用的下一行文本。 – chepner