字符串中字母的计数

0 投票
6 回答
534 浏览
提问于 2025-04-18 15:00

我在想怎么数一个字符串里特定的字母。首先想到的是 len 这个函数。出于好奇,有没有办法不使用内置函数和 len 来写这个代码呢?

这里有个类似的问题 在这里,我看了之后有点搞不懂。

def count_letters(word, char):
  count = 0
  for c in word:
    if char == c:
      count = count + 1
  return count

if char == c:count += 1 这两行代码里到底发生了什么?我明白为什么要用 for 循环,但我不明白为什么要在后面加一个 if

6 个回答

0

你想要计算特定字符的出现次数。比如说,如果你有单词“hello”和字母“l”,你想要返回2,因为“l”在“hello”中出现了2次。

if语句就是用来检查这个字符是不是你想要的那个字符。如果是的话,就把计数器加1。for c in word: 这段代码是用来遍历单词中的每一个字符。

Python的语法非常简单易懂,试着把代码读出来,你就能明白它在做什么。

还有另一种方法可以做到这一点:

print len([c for c in word if c == char])

举个例子:

[c for c in 'hello world' if c == 'l']

将会返回:

['l', 'l', 'l']

然后len会返回3。

0

你有没有试过看看Python Wiki

上面说任何有迭代功能的对象都可以被循环遍历,这正好回答了你的第二个问题。

既然你不想用len这个函数,你可以像你链接的答案那样,使用for循环来遍历对象(这里的对象是字符串word),寻找字符char,每次找到char时就记录一下,使用count来计数。

参数char需要在word这个参数中找到,所以c只是一个变量,用来依次代表word中的每个字母(或者字符,因为字符串中的所有部分不一定都是字母)。

使用if语句的原因是,当循环变量c等于char时,就可以执行这个代码块。在这个代码块中,计数器会加一(count = count + 1),等到for循环结束后,函数会返回count(也就是char出现的次数,正好是你想要的统计特定字母在字符串中出现的次数)。

虽然说得有点长,但简单来说,你发的那个函数确实可以告诉你字母在这个单词中出现了多少次。

0
for c in word:

在这个语句中,单词会被当作一个字符串的列表来处理,c就是这个列表中的每一个字符。这意味着循环会对单词中的每个字符重复执行。

所以在这个语句中,if char == c:会把单词中的每个字符和char进行比较。

如果这个比较结果是对的,那么count的值就会增加1。

所以,针对你的问题

if char == c:就是把char和单词中的每个字符进行比较

count+=1则是把count的值增加1

2

字符串有一个内置的 count() 方法:

>>> s = 'aaabbbccc'
>>> s.count('a')
3
>>> s.count('aa')
1
2

这里提到的 if 是必要的,因为你只想计算特定字符 char 出现的次数。如果没有这个 if,你就会对字符串中的每一个字符都执行 count = count + 1,这样你得到的就是整个字符串的长度,而不是你想要的那个特定字符的数量。

代码中的注释:

for c in word:            # go through each character in code
    if char == c:         # if the character is the one we're counting
        count = count + 1 # add one to the current count of characters

撰写回答