首页 > 解决方案 > 遍历 str 以计算特定字母的出现次数

问题描述

我正在尝试计算字符串中特定字母的出现次数。举个例子,我想计算字符串中的字母 a 和 b "acdjsfdklfdcfnqc"(字符串或特定字母不重要)。

首先,我定义了一个容器 c,它将使用 while 循环和 if 语句计算字母的出现次数。我的代码如下:

def iterate_through_elements(input_str):
    c = 0
    for elements in input_str:
        if elements == "a":
            c += 1        
    return c

这段代码有效,在这里我只是想计算字符串中 a 的数量,但是当我还想计算 b 时,我修改了我的代码,如下所示:

def iterate_through_elements(input_str):
    c = 0
    for elements in input_str:
        if elements == "a" or "b":
            c += 1        
    return c

我添加了一个或运算符,我的想法是同时计算 a 和 b,但我的第二个函数给了我字符串中的字母总数,就像 len() 函数一样。然后我设法使用上面的功能实现了我的目标:

def get_count(inputStr):
    num_vowels = 0
    for char in inputStr:
        if char in "ab":
           num_vowels = num_vowels + 1
    return num_vowels

我的主要问题是:为什么我从顶部开始的第二个代码给了我字符串中的字母总数?

我希望它遍历每个元素并查找它是 a 还是 b,如果是 a 或 b,则将容器(变量 c)加一。我不明白 c 如何等于字符串的长度以及为什么它对单个字母有效(上面的第一个函数)而不是第二个?发生了什么变化?

标签: pythonstringfor-loopif-statement

解决方案


你需要改变

if elements == "a" or "b":

进入

if elements == "a" or elements == "b":

或更好:

if elements in "ab":

该行的问题if elements == "a" or "b":在于 python 将检查 ifelements == "a"或真值是否"b"Trueor False,它将始终为True1 *(an empty string '' isFalse`)*。


推荐阅读