# Newb ??

Steven D'Aprano steve at REMOVETHIScyber.com.au
Thu Nov 10 15:39:40 CET 2005

```On Thu, 10 Nov 2005 13:30:05 +0000, Norman Silverstone wrote:

>> In that case, think of "bisection".  Originally, all the computer knows
>> is that the number is in some range, say 0 to 100.  It can then guess
>> the midpoint, 50.  If it's right, yay!  Otherwise: if it's told to go
>> lower, then the range is now 0 to 49 -- if higher, it's 51 to 100; in
>> each case the range was just halved (actually, a bit more than halved).
>
> Thank you, I thought that might be the case. So, I will have to settle
> down and try to write some pseudo-code first. I hope to be back.

Heh, you will find that Python is practically executable pseudo-code!

Untested:

def guess_number():
# please don't cheat the poor computer...
print "Guess a number."
lo = 0
hi = 100
while True:
guess = (lo+hi)//2
ans = raw_input("Is it %d? y/n " % guess)
if ans in ('y', 'yes'):
break
ans = raw_input("Too high? y/n ")
if ans in ("y", "yes"):
hi = guess-1
else:
lo = guess+1

This should run, and it will *almost* do what you want.

--
Steven.

```