python counting letters in string without count function

11,589

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.

Share:
11,589
Matthew Hanson
Author by

Matthew Hanson

Updated on June 04, 2022

Comments

  • Matthew Hanson
    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.