Floats are inherintly inprecise. So if thigns arn't working like you expect don't be surprised if 0.15, 0.12, and 0.1 are closer to the same number than you think.

On Mar 28, 2005, at 6:32 AM, Kent Johnson wrote:

gerardo arnaez wrote:
Hi all,
I am trying to get a value dependant on initial vlaue inputed
Depending on the value, I want the functiont to return a percentage
For some reason, It seems to skip the first if state and just print
out the 1st elif
not sure what is going.

Are you sure you are passing a number to the function? If you are passing a value you received from raw_input it is a string.


also, is there a cleaner way to write this?

I would use a list of value pairs. It separates the data from the code so it is easier to see what is going on. Here is a version that does this. It also ensures that the input value is a float:


def INRadjust(x):
    cutoffs = [
        (1, .15),
        (1.5, .12),
        (1.75, .1),
        (1.9, .05),
        (3.1, 0),
        (4.1, -.1),
        (5.1, -.2),
        (6.1, -.25),
        (7.1, -.3),
    ]

    x = float(x)  # make sure x is a number
    for cutoff, value in cutoffs:
        if x < cutoff:
            return value

    print "Notify doctor"

Kent
-=-------------------------
#! /usr/bin/env python
'''
Calulate the percent increase in dose given an INR value.
'''
def INRadjust(x):
    if x < 1:
        return .15
    elif x < 1.5:
        return .12
    elif x < 1.75:
        return .1
    elif x < 1.9:
        return .05
    elif x < 3.1:
        return 0
    elif x < 4.1:
        return -.1
    elif x < 5.1:
        return -.2
    elif x < 6.1:
        return -.25
    elif x < 7.1:
        return -.3
    else:
        print "Notify Doctor"
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

_______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor


_______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor

Reply via email to