I'm aware of the
def remove_letter(): # Remove a selected letter from a string
base_string = str(raw_input("Enter some text: "))
letter = str(raw_input("Enter the letter to remove: ")) # takes any string size
letter = letter # ensures just one character is used
length = len(base_string)
location = 0
while location < length:
if base_string[location] == letter:
base_string = base_string[:location] + base_string[location+1::]
# concatenate string using slices
length -= 1
location += 1
print("Result %s" % base_string)
The problem oyu have is that you change the size of the string you want to remove the letter from, while removing the letter :
When you remove the first 'e' in Dee, you have location = 1, corresponding to the first 'e, but is now that of the second 'e'. After removing the e, at the end of the current loop, you have location = 2, and length = 2, so stop looping.
How to resolve the problem : Increase the location ONLY when you do not find the letter :
else: location += 1
This will prevent your loop from not checking the letter right after a removed letter.
If you need any more explanation, just ask.