Поиск код пополам не работает
Не могли бы вы объяснить, где я ошибаюсь с этим кодом? Я хочу выполнить поиск деления пополам, который принимает входной номер и повторяет поиск деления пополам, пока он не найдет тот же номер, что и ввод, и не напечатает различные операторы.
num =int( input("Please think of a number between 0 and 100!"))
maximum = num
minimum = 0
average = (minimum+maximum)/2.0
while(average<num):
print ("Is your secret number ", +average, "?")
cond = input("Enter 'h' to indicate the guess is too high.Enter 'l' to indicate the guess is too low.Enter 'c' to indicate I guessed correctly.")
if( cond == "h"):
maximum = minimum
minimum = 0
elif(cond == "l"):
minimum = maximum
maximum = 100
elif(cond == "c"):
print("Game over. Your secret number was: ", +average)
break
1 ответ
Во-первых, вам не нужно вводить предположение. Вы всегда будете начинать с середины своего диапазона.
Поэтому вместо этого подождите, пока пользователь придумает число, а затем догадайтесь.
import time
minimum = 0
maximum = 100
print("Please think of a number between {} and {}!".format(minimum, maximum))
time.sleep(3)
average = (minimum + maximum)/2.0
while(True):
print ("Is your secret number ", +average, "?")
cond = input("Enter 'h' to indicate the guess is too high.Enter 'l' to indicate the guess is too low.Enter 'c' to indicate I guessed correctly.")
Вторая проблема, вам нужно "разделить" пространство поиска. Если предположение слишком высокое, установите это предположение как максимальное, если слишком низкое, установите его как минимальное. Нет необходимости устанавливать другое значение в любом случае; это остается тем же.
if( cond == "h"):
maximum = average
elif(cond == "l"):
minimum = average
elif(cond == "c"):
print("Game over. Your secret number was: ", +average)
break
И, наконец, вам нужно обновить average
каждый раз через цикл, чтобы генерировать новое предположение.
average = (minimum + maximum) / 2.0