Вылезает ошибка при использовании функции pop
Смысл программы, задавать пользователю вопросы на время Чтобы вопросы не повторялись я решил использовать функцию pop Ошибка вылетает по принципу русской рулетки в любой момент Вот и сама ошибка:
IndexError: pop index out of range
А вот и сам код:
import random
import time
questions = ['Каким словом называли в древние времена водяные часы?','Именно эта страна дарит Великобритании красивую ель на Рождество. Какая?','Расширение мониторов меряют в …', 'Как называется линия, у которой нет концов?', 'Кем был Чингисхан?', 'Что в море является ориентиром для моряка?']
answers = {0:'Клепсидра',1:'Норвегия',2:'пикселях',3:'Луч',4:'ханом',5:'Полярная звезда'}
numbers = [0,1,2,3,4,5]
def timequestion():
points = 0
for i in range(5):
start = time.time()
rand_index = numbers.pop(random.choice(numbers))
print('На ответ даётся 10 секунд')
question = questions[rand_index]
print(question)
right_answer = answers[rand_index]
stop = time.time()
answer = input('Введите ответ:')
if answer.lower()== right_answer.lower():
if stop - start > 10:
print('Время истекло')
continue
else:
print('Ответ верный!')
points += 1
continue
else:
print('Ответ неверен!')
continue
print('Вы набрали ' + str(points))
timequestion()
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Проблема в том, что pop изымает элемент по индексу, а не по значению, на что вы судя по всему рассчитывали.
Вы можете сделать так:
def timequestion():
points = 0
for i in range(5):
start = time.time()
rand_index = random.choice(numbers)
numbers.remove(rand_index)
...
Или как предложил @CrazyElf в комментариях:
def timequestion():
points = 0
random.shuffle(numbers)
for i in range(5):
start = time.time()
rand_index = numbers.pop()
...