

# longestName has two inputs, a list of names (one word each)
# and a letter. It returns the longest name that starts 
# with that letter. Assume all names start with a 
# capital letter and letter is a capital letter
def longestName(alist, letter):
    longest = ''
    for name in alist:
        if letter == name[0] and len(name) > len(longest):
            longest = name
    return longest 






# positionLongestName has the same two inputs. This
# returns the index position of the longest name
# that starts with letter
def positionLongestName(alist, letter):
    longest = ''
    maxindex = -1
    for index in range(len(alist)):
        name = alist[index]
        if letter == name[0] and len(name) > len(longest):
            longest = name
            maxindex = index
    return maxindex



#another version with enumerate
def positionLongestName2(alist, letter):
    longest = ''
    maxindex = -1
    for (index,name) in enumerate(alist):
        if letter == name[0] and len(name) > len(longest):
            longest = name
            maxindex = index
    return maxindex

def positionLongestName3(alist, letter):
    longest = ''
    maxindex = -1
    for w in enumerate(alist):
        index = w[0]
        name = w[1]
        # (index, name) = w  # or could do this to create two variables
        if letter == name[0] and len(name) > len(longest):
            longest = name
            maxindex = index
    return maxindex
    
names = ['Fred', 'John', 'Sue', 'Joe', 'Mo', 'Sabrina', 'Mary', 'Sarah', 'Jackson']
print longestName(names,'J')
print positionLongestName(names, 'J')
print positionLongestName2(names, 'J')
print longestName(names,'S')
print positionLongestName(names, 'S')
print positionLongestName2(names, 'S')

