Нужно улучшить код для учебного проекта.Алгоритм должен угадывать число за меньшее количество попыток

import numpy as np

count = 0                           # счетчик попыток
number = np.random.randint(1,101)   # загадали число
print ("Загадано число от 1 до 100")

while True:                        # бесконечный цикл
    predict = int(input())         # предполагаемое число
    count += 1                     # плюсуем попытку
    if number == predict: break    # выход из цикла, если угадали
    elif number > predict: print (f"Угадываемое число больше {predict} ")
    elif number < predict: print (f"Угадываемое число меньше {predict} ")
        
print (f"Вы угадали число {number} за {count} попыток.")    

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

Автор решения: Dark Serius

Например, пользователь загадывает число, а программа должна отгадать за меньшое кол-во попыток.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import numpy as np

count = 0
NUMBER = int(input("введи число которое ты загадал: "))
min_num = 1
max_num = 101

while 1:
    predict = np.random.randint(min_num, max_num)
    count += 1
    if predict == NUMBER: break
    elif predict < NUMBER:
        min_num = predict
        print (f"Угадываемое число меньше {predict} ")
    elif predict > NUMBER:
        max_num = predict
        print (f"Угадываемое число больше {predict} ")

print (f"Вы угадали число {NUMBER} за {count} попыток.")

Это простой алгоритм поиска (бинарный поиск). Мы урезаем область поиска после каждой попытки, в зависимости о того, больше или меньше число.

→ Ссылка
Автор решения: Влад Дутчак

Алгоритм бинарного поиска как по мне здесь кстати:

import numpy as np

count = 0
number = np.random.randint(1, 101)
print("Загадано число от 1 до 100")
min = 0
max = 100
while True:
    predict = int(input())
    count += 1
    if number == predict:
        break
    elif number > predict:
        min = predict
        print(f"Угадываемое число больше {predict}")
        print(f'Алгоритм бинарного поиска рекомендует вам число:{round((max + min) / 2)}')
    elif number < predict:
        max = predict
        print(f"Угадываемое число меньше {predict}")
        print(f'Алгоритм бинарного поиска рекомендует вам число:{round((max+min)/2)}')


print(f"Вы угадали число {number} за {count} попыток.")

Или автоматизированная версия:

import numpy as np

count = 0
number = np.random.randint(1, 101)
print("Загадано число от 1 до 100")
min = 0
max = 100
while True:
    predict = round((min+max)/2)
    #predict = int(input())
    count += 1
    if number == predict:
        break
    elif number > predict:
        min = predict
        print(f"Угадываемое число больше {predict}")
        print(f'Алгоритм бинарного поиска рекомендует вам число:{round((max + min) / 2)}')
    elif number < predict:
        max = predict
        print(f"Угадываемое число меньше {predict}")
        print(f'Алгоритм бинарного поиска рекомендует вам число:{round((max+min)/2)}')


print(f"Вы угадали число {number} за {count} попыток.")

В среднем выходит 6-7 попыток

→ Ссылка