计算字符串中的字母

时间:2014-07-28 06:55:32

标签: python

我想知道如何计算字符串中的特定字母。突然出现的第一件事就是函数len。出于好奇,有没有办法编写这段代码而不使用内置函数并使用len

有一个问题类似于here,我无法理解它。

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 :(得分:2)

需要if,因为您只想计算特定字符char的实例。如果没有它,你最终会对字符串中的每个字符进行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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

您希望仅为计算特定字符。这意味着如果你有单词“hello”和字母“l”,你想要返回2,因为“l”在“你好”中出现2次。

if只是检查char是否是你想要的字符,如果是这种情况,你将计数器递增1 - for c in word:迭代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.

答案 3 :(得分:0)

for c in word:

在此语句中,单词将被视为字符串列表,c是该列表中的每个字符。这意味着循环将重复单词的每个字符。

因此,在此声明if char == c:中,每个字的字符都将与char进行比较。

如果陈述为真,那么count将增加1。

所以,根据你的问题

if char == c:将char与单词的每个字符进行比较

count+=1会将计数值增加1

答案 4 :(得分:0)

您是否尝试过 Python Wiki

它声明可以循环使用具有迭代功能的任何对象,这将回答您的第二个问题。

由于您不想使用len函数,因此您可以使用 for循环,就像您链接的答案一样循环遍历对象(String {{ 1}})查找字符word,每次使用char找到char时都会记录。

参数count需要在char参数中找到,因此word只是设置为每个字母的变量(或字符,而不是字符串的所有部分都可能是循环显示c

word语句的原因是循环变量if等于c时,可以执行该块。在这个特定的块中,计数正在迭代(char),一旦函数完成迭代for循环,它将返回count = count + 1count多少次发现,按照你的要求有效地计算字符串中的特定字母。

啰嗦但简而言之,是的,你发布的这个功能会给你一个字母在这个单词中的次数。

答案 5 :(得分:0)

使用collections.Counter

>>> word = "Hallelujahhhhh"
>>> from collections import Counter
>>> Counter(word)
Counter({'h': 5, 'l': 3, 'a': 2, 'e': 1, 'H': 1, 'j': 1, 'u': 1})