用python编写一个程序,能从一直字符串中查找某元素的个数。例如“123456789011112221111111122211111111"

先找“1”有多少个,再找“11“有多少个,再找”111“有多少个,直到找到最长的一串”1“组成的字符串为止。输出所有结果。急急急

def f(s, c):
count = 0
while len(s) > 0:
index = s.find(c)
if index == -1:
break
count += 1
s = s[index+len(c):]
return count

def g(s, c):
cs = ""
while True:
cs += c
count = f(s, cs)
if count > 0:
print count, cs
else:
break

a="123456789011112221111111122211111111"
g(a, "1")

结果:
21 1
10 11
5 111
5 1111
2 11111
2 111111
2 1111111
2 11111111

也可以用re模块做.追问

要是改成字母呢?为什么就不行了?

追答

你怎么用的?字母可以:
a="ajklkkaaafkakbakkkakjsdjflajsdfjlkafd"
g(a, "k")
结果:
10 k
2 kk
1 kkk

追问

用了这个语句
f1=open("DNA.txt")
f=f1.read()
从文件中直接读取数据的
然后接g(f,“A”)
就报错

追答

报什么错?DNA.txt里是什么内容?

追问

DNA.txt里是一些碱基对大概就是“AAATTCGGCCTCAAAGCCTCCA”
报错内容:
Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\桌面\练习\123123", line 45, in
g(f,a)
File "C:\Documents and Settings\Administrator\桌面\练习\123123", line 15, in g
count = f(s, cs)
TypeError: 'str' object is not callable
刚才弄错了

温馨提示:答案为网友推荐,仅供参考
相似回答