python counting letters in string without count function
Solution 1
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
Solution 2
Instead of
count == count + 1
you need to have
count = count + 1
Solution 3
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.
Matthew Hanson
Updated on June 04, 2022Comments
-
Matthew Hanson about 2 years
I am trying to write a program to count the occurrences of a specific letter in a string without the count function. I made the string into a list and set a loop to count but the count is never changing and i cant figure out why. This is what I have right now:
letter = 'a' myString = 'aardvark' myList = [] for i in myString: myList.append(i) count = 1 for i in myList: if i == letter: count == count + 1 else: continue print (count)
Any help is greatly appreciated.