Ошибка Index Error: string index out of range при вызове переменной Python

Совсем недавно начал изучать Python, решил для практики сделать игру в города. При проверке города названного игроком, в коде проверяется последняя буква строки, но какой бы я не сделал эту строку, появляется ошибка Index Error: string index out of range. Я пробовал писать и citySaidByUser[len(citySaidByUser) - 1], и citySaidByUser[-1], ошибка всё равно сохраняется. Причём в самом IDE написано что ошибок нету, она появляется при выполнении программы. Код функции и текст ошибки прикреплю ниже.

def citiesAnfisaSayCity(citySaidByUser = 'noWord'):
    global alreadyUsedCities
    global notUsedRussianCities
    if citySaidByUser != 'noWord':
        alreadyUsedCities.append(citySaidByUser)
    else:
        pass
    notUsedRussianCities = allRussianCities.difference(alreadyUsedCities)
    AnfisaCity = 'noWord'
    for city in notUsedRussianCities:
        if citySaidByUser != 'noWord':
            if citySaidByUser[len(citySaidByUser) - 1] != 'ё' or 'ъ' or 'ы' or 'ь':
                if city[0] == str(citySaidByUser[len(citySaidByUser) - 1]):
                    AnfisaCity = city
            elif citySaidByUser[len(citySaidByUser) - 1] == 'ё' or 'ъ' or 'ы' or 'ь':
                if citySaidByUser[len(citySaidByUser) - 2] == 'ё' or 'ъ' or 'ы' or 'ь':
                    if city[0] == str(citySaidByUser[len(citySaidByUser) - 3]):
                        AnfisaCity = city
                    else:
                        pass
                else:
                    if city[0] == str(citySaidByUser[len(citySaidByUser) - 2]):
                        AnfisaCity = city
                    else:
                        pass
            else:
                if city[0] == str(citySaidByUser[len(citySaidByUser) - 1]):
                    AnfisaCity = city
                else:
                    pass
        else:
            AnfisaCity = notUsedRussianCities[0]
    if AnfisaCity != 'noWord':
        print(f'Анфиса сказала: {AnfisaCity}')
        citiesUserSayCity(str(AnfisaCity))
    else:
        citiesAnfisaLose()
        gameLobby()

Ниже строчка в которой ошибка.

if citySaidByUser[len(citySaidByUser) - 1] != 'ё' or 'ъ' or 'ы' or 'ь':

Снизу текст ошибки.

  File "C:\Users\artyo\source\repos\Anfisa\Anfisa\gamesFunc.py", line 122, in citiesAnfisaSayCity
    if citySaidByUser[len(citySaidByUser) - 1] != 'ё' or 'ъ' or 'ы' or 'ь':
IndexError: string index out of range

Ответы (1 шт):

Автор решения: DiMithras

Судя по коду функции, citySaidByUser в ней нигде не меняется.

Смотри вызов функции, такая ошибка может быть только если как аргумент передаёшь '' пустую строковую переменную.

Вызова функции в вопросе не видно.

Предусматриваем проверку:

def citiesAnfisaSayCity(citySaidByUser = 'noWord'):
    if citySaidByUser == '':
        print('No work was said')
        gameLobby()
        return
    # Остальная часть функции

citiesAnfisaSayCity('')
→ Ссылка