#python #binary-search
Вопрос:
просто предупреждаю, я новичок, так что ответ, вероятно, довольно прост.
поэтому я пытаюсь сделать игру в угадывание чисел, в которой вы думаете о числе от 1 до 100, а затем компьютер спрашивает вас, является ли его число x, и вы говорите, что оно либо слишком высокое, либо слишком низкое
проблема, с которой я сталкиваюсь, заключается в том, что после того, как вы скажете, что это слишком высоко или слишком низко, он просто угадывает 50 снова и снова, я гуглил около 2 часов, и я не могу понять, почему он это делает
hi = 100
low = 1
mid = (hi low)// 2
print ("Ok think of a number between 1 and 100.")
print ("I guess")
print (mid)
print ("1.) Too High")
print ("2.) Too Low")
g2 = input ("3.) Correct")
g2 = int(g2)
hi = int(100)
low = int(1)
mid = (hi low)// 2
while g2 != 3:
if g2 == 1:
(hi) = (mid) - 1
print ("I guess")
print (mid)
print ("1.) Too High")
print ("2.) Too Low")
g2 = input ("3.) Correct")
g2 = int(g2)
elif g2 == 2:
(low) = (mid) 1
print ("I guess")
print (mid)
print ("1.) Too High")
print ("2.) Too Low")
g2 = input ("3.) Correct")
g2 = int(g2)
Комментарии:
1. похоже, что часть кода отсутствует, или нет смысла в том, что цикл не завершается и ничего не печатается в цикле
2. Если пользователь не введет 3, он никогда не выйдет, хотя это не очень похоже на игру в угадайку
3. Ты никогда не меняешься
mid
.4. Подумайте логически о шагах, которые предпринимает ваш код.
mid
представляет собой предположение, которое вы собираетесь напечатать, верно? Где в вашей программе это значение когда-либо меняется ? Если вы хотите, чтобы что-то происходило каждый раз в цикле, как вы должны размещать это в своем коде?5. Вам следовало бы погуглить, как использовать отладчик, — тогда вы могли бы запускать свою программу шаг за шагом.
Ответ №1:
Вы не изменили значение mid
в своих if
заявлениях. Вы меняете значение high
и low
, но вы не вычисляете новое mid
из него, поэтому оно всегда остается 50
. Вы просто должны добавить mid = (low hi) // 2
после расчета новое high
или low
в своем if
заявлении.