我想知道如何计算字符串中的特定字母。突然出现的第一件事就是函数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
之后?
答案 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 + 1
(count
多少次发现,按照你的要求有效地计算字符串中的特定字母。
啰嗦但简而言之,是的,你发布的这个功能会给你一个字母在这个单词中的次数。
答案 5 :(得分:0)
>>> word = "Hallelujahhhhh"
>>> from collections import Counter
>>> Counter(word)
Counter({'h': 5, 'l': 3, 'a': 2, 'e': 1, 'H': 1, 'j': 1, 'u': 1})