Ошибка empty range for randrange() (0, 0, 0)
Подскажите пожалуйста, при запуске иногда вылезает ошибка:
empty range for randrange() (0, 0, 0)
Она возникает, когда randrange
считывает пустой список (наверное).
Не могу понять, откуда он берётся, прогонял через визуализатор - все ок, через пайчарм ошибка вылезает иногда.
Пустой список взяться не может так-то, потому что только 1 раз удаляется элемент, а потом, когда цикл for
начинается заново, появляется начальный список и из него удаляется также 1 элемент (список меняется всегда только на 1 элемент, не на все).
Условие:
Программа случайным образом назначает каждому ученику его тайного друга, который будет вместе с ним решать задачи по программированию, также нельзя быть тайным другом самому себе и нельзя быть тайным другом для нескольких учеников.
Выходные данные (могут быть и другие варианты):
Светлана Зуева - Борис Боков
Аркадий Белых - Светлана Зуева
Борис Боков - Аркадий Белых
Код:
import random
s=['Светлана Зуева', 'Аркадий Белых', 'Борис Боков'] # список имя/фамилия
proof=[]
for i in range(len(s)):
timemas=list(s) # список в котором нет s[i] элемента(ученика), чтобы не было повторок когда ученик является другом самого себя
del timemas[i]
while 1!=2: # бесконечный цикл пока не найдем друга
a=timemas[random.randint(0,len(timemas)-1)] # когда у нас 2 элемента(последовательность от 0 до 2) - они записываются как 0 1(2 не считается), метод randint включает 2 и получается 3 элемента вместо 2. (тут друг находится)
if a not in proof: # проверка, повторяется ли друг
print(s[i],'-',a)
proof.append(a)
break