Shawn Minisall wrote: > I just learned about while statements and get why you place them around > inputs for validation, but I'm a little lost on exactly where to place > it with what condition in this program where the number of fat grams > exceeds the total number of calories so that it loops back and asks you > the two questions again instead of just saying The calories or fat grams > were incorrectly entered. Any idea's? > > thx > > while cal <=0: > #Prompt for calories > cal = input("Please enter the number of calories in your food: ") > if cal <=0: > print "Error. The number of calories must be positive." > > #Prompt for fat > fat = input("Please enter the number of fat grams in your food: ") > if fat <=0: > print "Error. The number of fat grams must be positive." > > > #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 > > #evaluate input > if calfat > cal: > print "The calories or fat grams were incorrectly entered." > > elif calcent > 0 and calfat < cal: > 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 > you could change to something like this
while True: # don test in the loop #Prompt for calories cal = input("Please enter the number of calories in your food: ") if cal <=0: print "Error. The number of calories must be positive." continue ### here you don need to go any further in this loop #Prompt for fat fat = input("Please enter the number of fat grams in your food: ") if fat <=0: print "Error. The number of fat grams must be positive." continue ### here you don need to go any further in this loop #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 #evaluate input if calfat > cal: print "The calories or fat grams were incorrectly entered." #elif calcent > 0 and calfat < cal: else: # calcent will be bigger than zero now by construction, # and I guess you dont want to test for equality of # calfat and cal 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 %f%%" % calcent break # we got a satisfactory result, leave this loop -- http://mail.python.org/mailman/listinfo/python-list