我正在与一些简单的算法作斗争,这应该使python在尽可能少的猜测中猜测给定的数字。它似乎正在运行,但是非常慢。我究竟做错了什么。我已经阅读了几个有关此问题的主题,但是找不到解决方案。我是一名初学者程序员,因此欢迎您提出任何建议。
min = 1
max = 50
number = int(input(("please choose a number between 1 and 50: ")))
total = 0
guessed = 0
while guessed != 1:
guess = int((min+max)/2)
total += 1
if guess == number:
print("The number has been found in ",total," guesses!")
guessed = 1
elif guess > number:
min = guess + 1
elif guess < number:
max = guess - 1
谢谢
ps。我知道程序不会检查输入是否错误;)
python大神给出的解决方案
您的逻辑是倒退。当您猜得太高时,您想降低max
;当您猜得太低时,您想升高min
。尝试这个:
if guess == number:
print("The number has been found in ",total," guesses!")
guessed = 1
elif guess > number:
max = guess - 1
elif guess < number:
min = guess + 1