Можно ли вернуться к значению, которое переменной присвоила функция enumerate?
Мой код пронумеровывает разные переменные, которые я ввёл заранее, а потом просит пользователя ввести эту переменную. Можно ли сделать так, чтобы пользователь мог ввести только порядковый номер переменной? Переменные каждый раз меняют порядок, получается, и их индекс тоже меняется.
Я хочу, чтобы пользователь мог ввести только одну цифру (допустим, нужно значение под цифрой 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
Неверно. Попробуйте еще раз.