if then elif

chris.monsanto at gmail.com chris.monsanto at gmail.com
Thu Oct 11 00:23:49 CEST 2007


On Oct 10, 5:03 pm, Larry Bates <larry.ba... at websafe.com> wrote:
> Shawn Minisall wrote:
> > I just learned about if, then elif statements and wrote this program.
> > The problem is, it's displaying all of the possibilities even after you
> > enter a 0, or if the fat grams are more then the total number of
> > calories , that is supposed to stop the program instead of continuing on
> > with the print statements that don't apply.  Any idea's?  thanks
>
> >    #Prompt for calories
> >    cal = input("Please enter the number of calories in your food: ")
>
> >    #Prompt for fat
> >    fat = input("Please enter the number of fat grams in your food: ")
>
> >    #Input validation
> >    if cal or fat <= 0:
> >       #Display message
> >        print "Error.  The number of calories and/or fat grams must be
> > positive"
> >        print
>
> >    else:
> >    #Calculate calories from fat
> >        calfat = float(fat) * 9
> >          #Calculate number of calories from fat
> >        caldel = calfat / cal
>
> >    #change calcent decimal to percentage
> >        calcent = caldel * 100
>
> >    if calfat > cal:
> >        print "The calories or fat grams were incorrectly entered."
>
> >    else:
> >    #evaluate input
> >        if caldel <= .3:
> >            print "Your food is low in fat."
> >        elif caldel >= .3:
> >            print "Your food is high in fat."
>
> >    #Display percentage of calories from fat
> >        print "The percentage of calories from fat in your food is %",
> > calcent
>
> > Here's an example of the output...
>
> > Please enter the number of calories in your food: 50
> > Please enter the number of fat grams in your food: 30
> > Error.  The number of calories and/or fat grams must be positive
>
> > Your food is low in fat.
> > The percentage of calories from fat in your food is % 0.0
>
> > It was supposed to print The calories or fat grams were incorrectly
> > entered since the calories from fat was greater then the total number of
> > calories.
>
> Boolean problem:
>
> if cal or fat <= 0
>
> That may be the way you say it or "think" it but it won't work.
>
> 'cal or fat' is evaluated first.  Since they both have values this ALWAYS
> evaluates to 1 which is NEVER less than or equal to 0.
>
> You are looking for
>
> if (cal <= 0) or (fat <=0):
>
> (Note: Parenthesis not required, but it may help you understand precedence of
> evaluation.  Also read here:
>
> http://www.ibiblio.org/g2swap/byteofpython/read/operator-precedence.html
>
> -Larry

that's the most incorrect thing i've heard all day!

if cal or fat <= 0 is parsed as if (cal) or (fat <= 0)




More information about the Python-list mailing list