发生字母区分大小写

时间:2017-11-19 11:50:33

标签: python

我试图找到字母' b'和' B'。我写的代码完美无缺。有没有更好的方法可以做到这一点 我的代码:

def count_letter_b(string):
    #TODO: Your code goes here
    a = int(string.count('B'))
    b = int(string.count('b'))
    return a + b

print count_letter_b("Bubble Bungle")

4 个答案:

答案 0 :(得分:2)

您可以将字符串转换为大写(或小写),然后计算出现次数:

string.upper().count('B')

总的来说,您的代码将如下所示:

def count_letter_b(string):
    return string.upper().count('B')

注意:由于int(..)的结果已经是str.count

,因此无需转发int

答案 1 :(得分:0)

如果您只想将相同的计算应用于不同数量的字母,您可能希望它们成为参数(count_letter(s, letters)),但无论如何,这是一个更实用的示例:

def count_letter_b(string):
    return sum(map(string.count, 'Bb'))

这使用绑定到输入字符串实例的str.count版本。

请注意,如果您将名称string用作参数名称,则会将其隐藏。

答案 2 :(得分:0)

你可以做到

# count in upper string, upper character
def countInvariantChars(c,s):
    return s.upper().count(c.upper())

# list comprehensions + length    
def countInvariantChars2(c,s):
    return len([x for x in s if c.upper() == x.upper()])

# sum ones of list comprehension
def countInvariantChars3(c,s):
    return sum([1 for x in s if c.upper() == x.upper()])

print(countInvariantChars("b","Bubble Bungle"))    
print(countInvariantChars2("b","Bubble Bungle"))    
print(countInvariantChars3("b","Bubble Bungle"))

输出(pyfiddle.io):

read-only@bash: 4
4
4

答案 3 :(得分:-1)

使用此:

def count_letter_b(string): return string.lower().count('b') print(count_letter_b(string))