Почему цикл не обрывается?

Когда комбинация становиться [1,2,3] , почему цикл не прерывается?

Код:

import random


class Listing:

    def __init__(self, lis, first_num, last_num):

        self.lis = lis
        self.last_num = last_num
        self.first_num = first_num

    def run(self):
        while True:
            lis = [i for i in range(self.first_num, self.last_num + 1)]
            random.shuffle(lis)
            print(lis)

            lis = [self.first_num, self.last_num]

            if lis == [range(self.first_num, self.last_num)]:
                break
            else:
                continue


list_1 = Listing([], 1, 3)
list_1.run()

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

Автор решения: Edward Grachev

Потому что твое условие lis == [range(self.first_num, self.last_num)] никогда не выполняется. Когда комбинация становиться [1,2,3] , почему цикл не прерывается? в lis у тебя [1,2,3] потом допустим [1,2], тогда как [range(self.first_num, self.last_num)] у тебя = [range(1,3)], вероятнее всего тебе надо сделать так [x for x in range(self.first_num, self.last_num) + 1] но к чему лишние вычисления если можно сделать так:

import random


class Listing:

    def __init__(self, lis, first_num, last_num):
        self.lis = lis
        self.last_num = last_num
        self.first_num = first_num

    def run(self):
        a = [1,3]
        while True:
            lis = [i for i in range(self.first_num, self.last_num + 1)]
            random.shuffle(lis)
            lis = [self.first_num, self.last_num]
            if lis == a:
                print("Остановка цикла")
                break
            else:
                continue


list_1 = Listing([], 1, 3)
list_1.run()

введите сюда описание изображения

Зачем тебе тут range?

→ Ссылка