New to programming question

Joal Heagney joal at bigpond.net.au
Fri Apr 1 02:45:00 EST 2005


Ben wrote:
> This is an exercise from the Non-programmers tutorial for Python
> by Josh Cogliati.
> 
> The exercise is:
> 
> Write a program that has a user guess your name, but they only get 3
> chances to do so until the program quits.
> 
> Here is my script:
> 
> --------------------------
> 
> count = 0
> name = raw_input("Guess my name. ")
> 
> while name != 'Ben' and count < 3:

Everything inside this loop will only occur if the name doesn't equal 
'Ben' and the count is less than 3.

>     count = count + 1

You increase the count by one, which allows your code to catch the case 
where count = 2 and now equals 3.

>     if name != 'Ben' and count < 3:
>         name = raw_input('Guess again. ')
>     elif name == 'Ben' and count < 3:
>         print "You're right!"
>     else:
>         print 'No more tries.'

Which is why you get this print message, because count is now equal to 3.

> 
> ----------------------------------
> 
> Everything works except the line:  print "You're right!"

But at no point does the program get an opportunity to print "No more 
tries.' because there is no point inside this loop where name == 'Ben'.

> Could someone tell me what is wrong and give me a better alternative to
> what I came up with.  
> 
> Thank you 
> 
> Ben

Also, you're duplicating a lot of your case testing. You check to see if 
the name is 'Ben' at the start, and then inside the loop, and the same 
for the counts.

I tried to write out a logical method of approaching this problem, but 
in truth this particular use-case isn't that simple is it?

Here's my contribution anycase:

count = 0
# Get first input
name = raw_input("Guess my name: ")
# Give the sucker two extra goes
while count < 2:
	# Check the value of name
	if name == 'Ben':
		print "You're right!"
		break
	else:
		name = raw_input("Try again: ")
# Of course, we haven't checked the sucker's last guess
# so we have to do that now.
if count == 2:
	if name == 'Ben':
		print "You're right!"
	else:
		print "No more tries for you!!!"


Hope this helps.
Joal






More information about the Python-list mailing list