Код говорит, что переменной нет в диапазоне списка.

Naive014

Новичок
Пользователь
Окт 10, 2022
18
0
1
Хотел написать программу, где одна функция загадывает число, а другая угадывает это число с помощью бин. поиска. На деле совсем запутался с вызовами переменных, можете, пожалуйста помочь.
Код:
Python:
import random

class bags:
    low = 0
    guess = 0
    hidden_num = 0
    ls = []
    def game(self):
        print('Игра запущена')
        print('Число будет загадано в промежутке от 1 до x (включая эти числа)')
        period = int(input())
        hidden_num = random.randint(1, period)
        ls = list(range(1, period))
        print('Игра началась')
        self.binar_s()
        

    def binar_s(self):
        high = len(bags.ls)
        mid = (bags.low + high) // 2
        count = 0
        guess = bags.ls[mid]
        while low <= high:
            count += 1
            if guess == bags.hidden_num:
                print(f'Понадобилось {count} действий для поиска')
                return mid + 1
            elif guess < bags.hidden_num:
                high = mid - 1
            elif guess > bags.hidden_num:
                low = mid + 1
            else:
                return None       

bag = bags()
bag.game()
 

Naive014

Новичок
Пользователь
Окт 10, 2022
18
0
1
Вот ошибка:
Traceback (most recent call last):
File "c:\Users\Acer\Desktop\task\guess_and_binar.py", line 36, in <module>
bag.game()
File "c:\Users\Acer\Desktop\task\guess_and_binar.py", line 15, in game
self.binar_s()
File "c:\Users\Acer\Desktop\task\guess_and_binar.py", line 22, in binar_s
guess = bags.ls[mid]
~~~~~~~^^^^^
IndexError: list index out of range
 

Форум IT Специалистов