Найти - Пользователи
Полная версия: компьютер угадывает число, хелп
Начало » Python для новичков » компьютер угадывает число, хелп
1
Ruslan1
пытаюсь написать код игры, где компьютер угадывает загаданное пользователем число от 0 до 100,
сделать нужно не пользуясь case или for…

вот, что у меня получилось:

v1=101
v2=50
p=“”
while p!=“=”:
print(“\nМой ответ:”, v2)
p=input(“ ”)

if p==“<” and v2<v1:
ver= (v2-0)//2+0
v1=v2
v2=ver
elif p==“<” and v2>v1:
ver= (v2-v1)//2+v1
v1=v2
v2=ver
elif p==“>” and v2<v1:
ver= (v1-v2)//2+v2
v1=v2
v2=ver
elif p==“>” and v2>v1:
ver= (101-v2)//2+v2
v1=v2
v2=ver

print(“\nЯ угадал, ваше число =”, v2)


Но проблема в том, что у меня сравниваются только последние два варианта числа,
а теперь понял, что нужно сохранять все варианты угадываемых чисел…

Но как это сделать? и как тогда дальше выбирать из них наименьшие, наибольшие, и т.д.

balalay12
Двоичный поиск
Ruslan1
и без массивов….)
balalay12
У вас числа от 0 до 100 чем не массив
Разделить 100 на 2 и спросить в какой половине нужное число и повторить пока не останется 1 число.
Torn
Легко. Ежели не справишься - обращайся, напишу тебе.
vkhacker
Набросал:
def showhelp():
    # показываем справку
    print("В качестве ответа на вопрос компьютера используйте символы <(меньше), >(больше) и =(равно).")
# число от 0 до 100
r=0,100
# создаем множество чисел
m=set([i for i in range(r[0],r[1]+1)])
# возможные ответы пользователя
user_otvets={">", "<", "="}
# показываем диапазон чисел
print("Задумайте число от", r[0], "до", r[1])
# показываем справку
showhelp()
# хранит ответ пользователя
otvet=""
while otvet!="=":
    # если множество пустое
    if(len(m)<1):
        print("Компьютер: Вы мне соврали в ответах, лишь поэтому я не угадал!")
        # покидаем цикл
        break
    # вариант компьютера
    variant=(min(m)+max(m))//2
    # выводим вопрос
    print("Компьютер: Вы задумали "+str(variant)+"?")
    # считываем ответ пользователя
    otvet=input("Вы: ")
    # если ответ недопустим
    if otvet not in user_otvets:
        # показываем справку
        showhelp()
        # продолжаем цикл
        continue
    else:
        # ответ "больше"
        if otvet==">":
            # генерируем множество
            m=set([i for i in m if i>variant])
        # ответ "меньше"
        elif otvet=="<":
            # генерируем множество
            m=set([i for i in m if i<variant])
        # ответ "равно"
        else:
            # выводим, что угадали
            print("Компьютер: Ура! Я угадал!")
            # покидаем цикл
            break
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB