Introduction to Strings - Strings and Conditionals (Part Two) Section 11 - Why doesn't this work?

Write a function called common_letters that takes two arguments, string_one and string_two and then returns a list with all of the letters they have in common.

So, I brain-farted and attempted to create a solution completely unrelated to the lesson. Now I could just shrug and just use the far-simpler solution, but I want to understand why the code below simply doesn’t work and returns an empty list instead of filling up with unique letters. So…why doesn’t the common_list report unique letters and returns an empty list?

def common_letters(string_one, string_two): common_list = [] if len(string_one) > len(string_two): # ensures that I use every single letter in string_one if it is longer than string_two for string_one_letter in string_one: #goes through every single letter in string one for string_two_letter in string_two: #goes through every single letter in string two if string_one_letter == string_two_letter: #checks if the string_one_letter matches with the string_two_letter for element in common_list: #goes every element in the common_list if string_one_letter != element: #checks if the string_one_letter does not match any element in the common list common_list.append(string_one_letter) #if the string_one_letter doesn't match any element in the common list, add the string_one_letter into the common list return common_list else: # if string_two is actually longer than string_one, this is the contingency for that for string_two_letter in string_two: for string_one_letter in string_one: if string_two_letter == string_one_letter: for element in common_list: if string_one_letter != element: common_list.append(string_one_letter) return common_list

I think there are a lot of issues with the logic of the code and it is hard to follow so many nested loops.
But as for why common_list is an empty list, you initialize common_list as an empty list. In your code, appending to this list only happens when going through the loop

for element in common_list:

But common_list is empty and so the above for loop doesn’t run, because there is no element to iterate over. And since, appends to common_list only happen within this loop, so common_list never changes and remains an empty list.