>>> def alphabet_index(letters, letter):
... out = -1
... for i, val in enumerate(letters):
... if val == letter:
... out = i
... break
... return out
...
>>> alphabet_index(['a', 'b', 'c'], 'b')
1
>>> alphabet_index('hijkl', 'k')
3
>>> alphabet_index('abc', 'z')
-1
>>>
UniQue
AssertionError: assert alphabet_index(string.ascii_lowercase, "ä") == "Letter not found."
Если уж написано, что функция возвращает int, то так и должно быть. А тут утверждение (assert) проверяет на возвращение строки. Нужно определиться сразу, что возвращать, число или строку. В питоне в подобных функциях чаще всего бывает, что либо возвращается число, либо порождается исключение. Возможно, тебе там надо исключение порождать, если буква не найдена с списке букв.
Кстати, string.ascii_lowercase списком не является, это просто строка.
>>> import string
>>>
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>>
Так что автор задачи и тестов к ней чуть-чуть не того. Либо это разные люди, либо он просто не может соединить 2 + 2 у себя в голове.