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