FAQ: Code Challenge: String Methods - Count Letters


#1

This community-built FAQ covers the “Count Letters” exercise from the lesson “Code Challenge: String Methods”.

Paths and Courses
This exercise can be found in the following Codecademy content:

FAQs on the exercise Count Letters

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!


#2

I have a question about the suggested code:

letters=“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”
def unique_english_letters(word):
> uniques = 0
>>for letter in letters:
>>if letter in word:
>>>uniques += 1

return uniques

In this case, calling the function with the argument ‘mississippi’ returns a value of 4. I see that there are only 4 distinct letters, but what part of the code makes it so letters aren’t added to “uniques” more than once? Thanks!


#3

Because your code is iterating over letters which is comprised of all unique characters.

In technical terms, we wouldn’t need to iterate the long string, just the word and compare it to the letters string.

uniques = []
for letter in word:
    if letter in letters and not letter in uniques:
        uniques.append(letter)
return len(uniques)

#4

Ohh, I see. That makes a lot more sense now. I was thinking of some other ways to do it, too, but your explanation helps a lot. Thank you!


#5

Thanks for contributing this method too, it does illustrate and explain the function in another way!


#7
def unique_english_letters(word):
  unique = []
  for i in word:
    if i not in unique:
      unique.append(i)
  return len(unique)

I misunderstood at first thinking it wanted only the unique letters returned, so originally I had return unique. I read it more carefully and saw it wanted a number return so I found return len(unique) to be the best option.


#8

what am I doing wrong here?

the error message makes so sense whatsoever;
I’ve used word as a parameter like they’ve asked me to!


#9

Be sure to unindent out of the for loop and return uniques.


#10

I understand that I could append an empty list to get this count. But why does this not work?
Thanks for any assistance!

image


#11

Line 7 should not be inside the loops. Set it before the outer loop.


#12

This returns an answer of 1 for both words. When I set the return statement inline with the out loop it returns basically a letter count of both words.
Thanks!!

image


#13

The return statement needs to unindented so it is outside of the outer loop.


#14

I tried that several times but got an indent error.
I went ahead and re-wrote the function to return the length of a list of unique letters. That is working.
Perhaps there was a basic error in the way I was approaching the problem.
Thanks again for your input!


#15

You might have been on the right track before my first post. I got waylaid by the letter_count variable. This function should return a list of characters.

For instance, mississippi contains misp. The function should compose a list of letters, not count them.