Можно ли написать запрос с IF короче?

if input_user_level == 1:
    user_level = words_easy

elif input_user_level == 2:
    user_level = words_medium

elif input_user_level == 3:
    user_level = words_hard

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

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

Вариант со словарем - преимущество в возможности получить значение по умолчанию, если введенное значение не соответствует ни одному из ключей:

level_dict = {1: words_easy, 2: words_medium, 3: words_hard}
user_level = level_dict.get(input_user_level, words_medium)

Однострочный формат:

user_level = {1: words_easy, 2: words_medium, 3: words_hard}.get(input_user_level, words_medium)

Вариант со списком от @CrazyElf - преимущество в более коротком описании коллекции (при условии предварительной валидации введенного значения, иначе может возникнуть ошибка IndexError: list index out of range):

level_list = [words_easy, words_medium, words_hard]
user_level = level_list[input_user_level - 1]

Однострочный формат:

user_level = [words_easy, words_medium, words_hard][input_user_level - 1]

Способ, появившийся в версии Python 3.10, оператор match-case - преимущество в возможности далее писать разный код в ветках алгоритма:

match input_user_level:
    case 1:
        user_level = words_easy
        # код 1
    case 2:
        user_level = words_medium
        # код 2
    case 3:
        user_level = words_hard
        # код 3
    case _:  # Иное значение
        user_level = words_easy
        # код 4

Иные способы ранее описывались в данном обсуждении.

→ Ссылка