Можно ли вернуться к значению, которое переменной присвоила функция enumerate?

Рейтинг: 0Ответов: 1Опубликовано: 30.05.2023

Мой код пронумеровывает разные переменные, которые я ввёл заранее, а потом просит пользователя ввести эту переменную. Можно ли сделать так, чтобы пользователь мог ввести только порядковый номер переменной? Переменные каждый раз меняют порядок, получается, и их индекс тоже меняется.

Я хочу, чтобы пользователь мог ввести только одну цифру (допустим, нужно значение под цифрой 2. В этом случае, ввести только цифру 2) Не самый сложный и нужный вопрос, но я не могу решить его.

from random import randint, shuffle

x=randint(1,9)
y=randint(1,9)
z=0

options = [int(str(x) + str(y) + str(z)), int(str(x) + str(z) + str(y)),
           int(str(y) + str(x) + str(z)), int(str(y) + str(z) + str(x))]

correct_answer = options[3]

shuffle(options)

print("Укажите число, в котором {:} единицы и {:} сотни.".format(x, y))


print("Варианты ответа:")

for i, option in enumerate(options):
    print(f"{i+1}. {option}")


user_input = int(input("Введите нужное значение: "))

if user_input == correct_answer:
    print("Верно!")
else:
    print("Неверно. Попробуйте еще раз.")

Ответы

▲ 1Принят

Не нужно ничего из enumerate "вытаскивать". enumerate по сути просто перечисляет значения вместе с их индексами. Но индекс у значения есть независимо от enumerate, это просто положение значения в списке. Если пользователь введет индекс, нет никакой проблемы по этому индексу получить из списка значение. Если вводит номер (индекс + 1), то нужно просто вычесть единицу, и по полученному индексу вытащить значение из списка.

Просто конвертируете полученное от пользователя число в int, вычитаете 1 (т.к. индексы считаются от 0), потом берете по полученному индексу значение из списка options и сравниваете с правильным:

user_input = int(input("Введите номер правильного варианта: "))

answer = options[user_input - 1]

if answer == correct_answer:
    print("Верно!")
else:
    print("Неверно. Попробуйте еще раз.")

Вывод:

Укажите число, в котором 7 единицы и 1 сотни.
Варианты ответа:
1. 701
2. 710
3. 107
4. 170
Введите номер правильного варианта: 3
Верно!
Укажите число, в котором 1 единицы и 5 сотни.
Варианты ответа:
1. 150
2. 510
3. 105
4. 501
Введите номер правильного варианта: 1
Неверно. Попробуйте еще раз.