Зачем вам нужны списки для хранения ввода имени пользователя и имени пользователя вместо обычных строк?
Причина, по которой код завершается ошибкой, если строковый индекс выходит за пределы диапазона, заключается в том, что вместо переменной userNameInput установлена строкаиз его первого элемента в строку.
Тем не менее, было бы предпочтительнее использовать строки вместо списков, в первую очередь.
def getUserName():
userName = "Chan"
userNameInput = input("Username: ")
while userNameInput != userName:
if len(userNameInput) == 0:
print("Username can not be blank. Please try again.")
userNameInput = input("Username: ")
elif userNameInput == userName:
print("Username is correct. Input password.")
else:
print("Username is not correct. Please try again.")
userNameInput = input("Username: ")
Вот решение с использованием строк вместосписки, решающие вашу проблему.