Python查找函数不工作。我做错了什么?

Python查找函数不工作。我做错了什么?,python,string,substring,bioinformatics,rosalind,Python,String,Substring,Bioinformatics,Rosalind,我是一个程序员爱好者(我的专业是生物学),所以如果代码太糟糕,我道歉 无论如何,我正在做一个rosalind.info练习(),它想让我找到每个索引,其中一个特定的DNA基序包含在一个更大的DNA序列中。基本上,我需要在字符串中找到子字符串的索引。应该很容易吧?嗯,也许你能帮我 这是我的代码: with open('rosalind_subs.txt') as f: seq = f.readline() seq.strip() subs = f.readline()

我是一个程序员爱好者(我的专业是生物学),所以如果代码太糟糕,我道歉

无论如何,我正在做一个rosalind.info练习(),它想让我找到每个索引,其中一个特定的DNA基序包含在一个更大的DNA序列中。基本上,我需要在字符串中找到子字符串的索引。应该很容易吧?嗯,也许你能帮我

这是我的代码:

with open('rosalind_subs.txt') as f:
    seq = f.readline()
    seq.strip()
    subs = f.readline()
    subs.strip()
    break

def finder(x, y):
    index = x.find(y)
    return index

print("sequence is: " + seq)
print("subs is: " + subs)

print(finder(seq, subs))
这是我的输出:

sequence is:  ACCAGTCTCTTTTTTCTCTTTTCTCTTTTCTCTTTTGACCCTCTTTTCGTCACTCTTTTACCTCTTTTTCTCTTTTACTCTTTTCTCTTTTACTCTTTTACTCTTTTAGCGCAGATCTCTTTTCTCTTTTGGCTCTTTTGTCATCCTCTTTTAGACTCTTTTGGGAAGCGACGCCTCTTTTCTCTTTTCTCTTTTGCCTCTTTTTATAACCTAAAAGACTCTTTTCCCTCTTTTCCGATTTGCCAAGGGCTCTCTTTTCTCTTTTGCTCTTTTCTCTTTTCTCTTTTTACTCTTTTCTCTTTTCGCCCCAAGATTAACTCTTTTTCTCTTTTCTCTCTTTTTTCCTCTTTTCTCTTTTGAATTGACCTCTTTTTCTCTTTTTTTGGGCCGCTCTTTTCTCTTTTACTCTTTTCTCTCTTTTAACAGCTCTTTTCCTTCTCTTTTGTCTCTTTTAGTATACTCTTTTACTCTTTTCTCTTTTCTCTCTTTTACTCTTTTGCTCTTTTCTCTTTTTGTCTCTTTTGCCCTGTCTCTTTTCACGCTTCTCTTTTAGTGTACTCTTTTACTCTTTTTGGCTCTTTTCGAATTTGTTAGCTCTTTTGCTCTTTTCTCTTTTGCTCTTTTGTCTCTTTTGATCAGATTCTCTTTTTCTCTTTTCTCTTTTCCTTAAGCAGATTTCTCTTTTCTCTTTTTCTCTCTTTTGCTCTTTTACTCTTTTACTGCTTTCTCTTTTACAACCTCTTTTACTCTTTTAAGCTCTTTTCTCTTTTGCGCCTCTTTTCCTCCCCTCTTTTTAGCTCTTTTCTCTTTTTCGCTCTTTTCAGCTCTTTTCACTCTTTTGTTTTGAGCTCTTTTCAGACTCTTTTATCCTCTTTTTTCCTCTTTTAGCGCTCTTTTGTAGCCTCTTTT

motif is: CTCTTTTCT

-1

***Repl Closed***
我把
***Repl关闭了***
放在那里,想尽一切办法。也许这和Supreme REPL有关


不管怎么说,你可能不能仅仅通过观察来判断,但是这个基序实际上在DNA序列中被发现了很多次,只是查找功能没有检测到它。给出了什么?

中断不适用于范围。请删除并尝试它。我已经测试了下面的代码

with open('rosalind_subs.txt') as f:
    seq = f.readline()
    seq.strip()
    subs = f.readline()
    subs.strip()

def finder(x, y):
    index = x.find(y)
    return index

print("sequence is: " + seq)
print("subs is: " + subs)

print(finder(seq, subs))
输出是

>>> 
sequence is: ACCAGTCTCTTTTTTCTCTTTTCTCTTTTCTCTTTTGACCCTCTTTTCGTCACTCTTTTACCTCTTTTTCTCTTTTACTCTTTTCTCTTTTACTCTTTTACTCTTTTAGCGCAGATCTCTTTTCTCTTTTGGCTCTTTTGTCATCCTCTTTTAGACTCTTTTGGGAAGCGACGCCTCTTTTCTCTTTTCTCTTTTGCCTCTTTTTATAACCTAAAAGACTCTTTTCCCTCTTTTCCGATTTGCCAAGGGCTCTCTTTTCTCTTTTGCTCTTTTCTCTTTTCTCTTTTTACTCTTTTCTCTTTTCGCCCCAAGATTAACTCTTTTTCTCTTTTCTCTCTTTTTTCCTCTTTTCTCTTTTGAATTGACCTCTTTTTCTCTTTTTTTGGGCCGCTCTTTTCTCTTTTACTCTTTTCTCTCTTTTAACAGCTCTTTTCCTTCTCTTTTGTCTCTTTTAGTATACTCTTTTACTCTTTTCTCTTTTCTCTCTTTTACTCTTTTGCTCTTTTCTCTTTTTGTCTCTTTTGCCCTGTCTCTTTTCACGCTTCTCTTTTAGTGTACTCTTTTACTCTTTTTGGCTCTTTTCGAATTTGTTAGCTCTTTTGCTCTTTTCTCTTTTGCTCTTTTGTCTCTTTTGATCAGATTCTCTTTTTCTCTTTTCTCTTTTCCTTAAGCAGATTTCTCTTTTCTCTTTTTCTCTCTTTTGCTCTTTTACTCTTTTACTGCTTTCTCTTTTACAACCTCTTTTACTCTTTTAAGCTCTTTTCTCTTTTGCGCCTCTTTTCCTCCCCTCTTTTTAGCTCTTTTCTCTTTTTCGCTCTTTTCAGCTCTTTTCACTCTTTTGTTTTGAGCTCTTTTCAGACTCTTTTATCCTCTTTTTTCCTCTTTTAGCGCTCTTTTGTAGCCTCTTTT

subs is: CTCTTTTCT
15

也是这里的一位生物学家

首先,通过使用
splitlines()
,可以改进要在序列中读取的代码和motif,它负责删除换行符。还请注意,我是如何同时指定
seq
motif
变量的

with open('rosalind_subs.txt') as f:
    seq, motif = f.read().splitlines()
接下来,您正确地注意到
find
只返回第一次出现的motif的索引。要查找所有出现的情况,请了解find接受另一个可选参数
start
。如果你提供了,它会从索引位置开始查看。在循环中使用它,您将获得所有索引


另一种方法是使用。注意,图案可能相互重叠,因此您需要使用。

也许您可以在while循环之后打印seq和subs。实际上,我不理解while循环,因为它会在第一次迭代时中断。这段代码不会运行,因为缩进没有意义。缩进在python中很重要,即使是在SO上发布缩进。
seq.strip()
不会改变
seq
。它返回一个您要丢弃的字符串。您知道如何使用调试器吗。您使用的是哪个IDE?也许你应该使用pycharm并熟悉调试器。@Jérôme是的,while循环毫无意义。我忘了我是怎么想的。我吃了它。谢谢检查OP。