python counting letters in string without count function

本小妞迷上赌 提交于 2019-12-02 03:12:19

Be careful, you are using count == count + 1, and you must use count = count + 1

The operator to attribute a new value is =, the operator == is for compare two values

Instead of

count == count + 1

you need to have

count = count + 1

Although someone else has solved your problem, the simplest solution to do what you want to do is to use the Counter data type:

>>> from collections import Counter
>>> letter = 'a'
>>> myString = 'aardvark'
>>> counts = Counter(myString)
>>> print(counts)
Counter({'a': 3, 'r': 2, 'v': 1, 'k': 1, 'd': 1})
>>> count = counts[letter]
>>> print(count)
3

Or, more succinctly (if you don't want to check multiple letters):

>>> from collections import Counter
>>> letter = 'a'
>>> myString = 'aardvark'
>>> count = Counter(myString)[letter]
>>> print(count)
3

The simplest way to do your implementation would be:

count = sum(i == letter for i in myString)

or:

count = sum(1 for i in myString if i == letter)

This works because strings can be iterated just like lists, and False is counted as a 0 and True is counted as a 1 for arithmetic.

Use filter function like this

len(filter(lambda x: x==letter, myString))

Your count is never changing because you are using == which is equality testing, where you should be using = to reassign count. Even better, you can increment with

count += 1

Also note that else: continue doesn't really do anything as you will continue with the next iteration of the loop anyways. If I were to have to come up with an alternative way to count without using the count function, I would lean towards regex:

import re
stringy = "aardvark"
print(len(re.findall("a", stringy)))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!