计算字符串中的一组字符

2024-03-28 21:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想数一数字符串中的一组字符,qed。我的想法是迭代给定字符串中的每个字符,如果N(i),N(i-1),N(i-2)与'qed'匹配,则更新计数,但迄今为止失败。有什么建议吗?谢谢!你知道吗

def test(N):
    s = ('qed')
    count = 0
        for i in range(len(N)):
            if N[i] + N[i-1] + N[i-2] == s:
                count = count + 1
        return print(count)
test('qedmlqedlolqed')

Tags: 字符串intestforlenreturnifdef
3条回答
>>> 'qedmlqedlolqed'.count('qed')
3

编辑:为什么要投反对票?问题是“有什么建议吗?”我认为这是一个很好的例子。你知道吗

虽然Stefan的答案简单明了,但这里有另一种方法可以使用列表理解

s='QEDMLQEDOLQED'

结果=len([1表示范围内的i(len(s)),如果s[i:i+3]=='qed']) (谢谢Stefan)

修复代码:

def test(N):
    s = 'qed'
    count = 0
    for i in range(len(N)-2):
        if N[i:i+3] == s:
            count += 1
    return count

>>> test('qedmlqedlolqed')
3

或者更一般地说:

def test(N, s):
    count = 0
    if s:
        for i in range(len(N)-len(s)+1):
            if N[i:i+len(s)] == s:
                count += 1
    return count

>>> test('qedmlqedlolqed', 'qed')
3
>>> test('qedmlqedlolqed', 'ed')
3
>>> test('qedmlqedlolqed', 'd')
3
>>> test('qedmlqedlolqed', '')
0
>>> test('qedmlqedlolqed', 'lol')
1
>>> test('qedmlqedlolqed', 'rofl')
0

或者,更简单的方法是使用str.count()

>>> 'qedmlqedlolqed'.count('qed')
3

'

相关问题 更多 >