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