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
-- http://mail.python.org/mailman/listinfo/python-list
