On 03/11/2014 05:07 AM, Scott W Dunning wrote:
On Mar 8, 2014, at 3:57 AM, spir <denis.s...@gmail.com> wrote:

Well done.
And now that you have the right set of tests you can
half the number of lines by combining your if
conditions again, like you had in the original
post. ie. Bring your hot/cold/warm tests together.

So below is what I finally came up with that works.  I’m trying to condense it 
to half the number of lines like Denis suggested.  I was hoping to clarify a 
couple things if you guys don’t mind….

I wanna make sure I understand how this code is working.  So, from what I 
gather it first checks to see if the ‘guess’ is out of range and if that is 
false it continues to the next ‘if’ statement checking wether it’s too low.  
Now this is where I’m not 100% sure if the too low ‘if’ statement is false does 
it skip everything that is nested below it (you are cold, warm, on fire) and go 
to the ‘if statement checking if it’s too high?   And now say the too low ‘if’ 
statement is true, because it’s an ‘if’ the code does not stop it continues but 
when it gets to the elif the code stops?
def print_hints(secret, guess):
     if guess < 1 or guess > 100:
         print
         print "Out of range!"
         print

I think here if the condition is true, you could just quit the function (return), no? The rest does not make much sense, I guess...
     if guess < secret:
         print
         print "Too low!"
         if guess < secret - 10:
             print "You are cold!"
             print
             print "Sorry please try again."
             print
             print
         elif guess < secret - 5:
             print "You are warmer!"
             print
             print "Sorry please try again."
             print
             print
         else:
             print "You're on fire!!"
             print
             print "Sorry please try again."
             print
             print
     if guess > secret:
         print
         print "Too high!"
         if guess > secret + 10:
             print "You are cold!"
             print
             print "Sorry please try again."
             print
             print
         elif guess > secret + 5:
             print "You are warmer!"
             print
             print "Sorry please try again."
             print
             print
         else:
             print "You're on fire!!"
             print
             print "Sorry please try again."
             print
             print

This is what I have right now, obviously it’s not working.  I’ve been playing 
around with it but I’m just not seeing where I’m going wrong.  Any suggestions 
are greatly appreciated!

def print_hints(secret, guess):
     if guess < 1 or guess > 100:
         print
         print "Out of range!"
         print
     if guess < secret:
         print
         print "Too low!"
     if guess > secret:
         print
         print "Too high!"
     if guess < secret - 10 or guess > secret - 10:
         print "You are cold!"
         print
         print "Sorry please try again."
         print
         print
     elif guess < secret - 5 or guess > secret - 5:
         print "You are warmer!"
         print
         print "Sorry please try again."
         print
         print
     else:
         print "You're on fire!!"
         print
         print "Sorry please try again."
         print
         print


Below, the "temperature" hint and low/high hint are logically independant. The first one depends on the distance between secret and guess numbers, the second one depends on their relative values (greater/smaller). And the second hint (low/high) only makes sense iff the player did not win, meaning iff not "on fire!".

However, both are related to the difference. Conceptually, after having passed the test out-of-range, I would start with something like:

        diff = guess - secret
        
        # (we know guess is in range)
        # temperature hint
        dist = abs(diff)
        if dist == 0:
            ... on fire!
            return
        elif dist < 5:
            ...

        # (we know secret was not found)
        # high/low hint
        neg = diff < 0
        ...

As an exercise, you could write each kind of hint in a separate tool func, and call each one only when relevant.

Denis
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to