0

多量栄養素計算機を作っています。ユーザーがエラーを起こした場合、この計算機は再起動して main() に戻ります。ただし、コードで main() を使用すると、コードが 2 回実行されて表示されると思います。

ここに私のコードへのリンクがあります: http://pastebin.com/FMqf2aRS

    *******Welcome to the MACRONUTRIENT CALCULATOR********
    Enter your calorie deficit: 30
    Percentage of Protein: 30
    Percent of Carbohydrates: 40
    Percentage of Fats: 40
    Total percentages surpassed 100! Please reenter percentages.
    *******Welcome to the MACRONUTRIENT CALCULATOR********
    Enter your calorie deficit: 2200
    Percentage of Protein: 30
    Percent of Carbohydrates: 30
    Percentage of Fats: 40
    You must eat 660.0 calories of protein which is equivalent to 165.0 grams of protein.
    You must eat 880.0 calories of fat which is equivalent to 97.7777777778 grams of fat.
    You must eat 660.0 calories of carbohydrates which is equivalent to 73.3333333333 grams of carbohydrates.
    You must eat 9.0 calories of protein which is equivalent to 2.25 grams of protein.
    You must eat 12.0 calories of fat which is equivalent to 1.33333333333 grams of fat.
    You must eat 12.0 calories of carbohydrates which is equivalent to 1.33333333333 grams of carbohydrates.

これが起こらないようにするためにこれにアプローチする別の方法はありますか?

4

2 に答える 2

2

main()あなたがやっている方法を呼び出すことは、これを解決するための間違った方法です。ますます多くのmain()呼び出しをスタックにプッシュしています。無効なエントリを連続して何度も入力すると、最終的にプログラムがクラッシュします。while以下に示すようにループを使用する必要があります

def main():
  while True:
      print "*******Welcome to the MACRONUTRIENT CALCULATOR********"
      calorie_deficit = float(input("Enter your calorie deficit: "))
      Percent_protein = float(input("Percentage of Protein: "))
      Percent_carb = float(input("Percent of Carbohydrates: "))
      Percent_fat = float(input("Percentage of Fats: "))
      Macro_dict = {'Protein': Percent_protein, 'Carbohydrate': Percent_carb, 'Fats': Percent_fat}
      Macro_sum = Percent_protein + Percent_carb + Percent_fat
      if not Total_Macro_Check(Macro_sum):
          continue
      Macro_percentage_to_calorie(calorie_deficit, Percent_protein, Percent_carb, Percent_fat)


def Total_Macro_Check(total_val):
  if total_val > 100:
    print "Total percentages surpassed 100! Please reenter percentages."
    return False
  if total_val < 100:
    print "Total precentages is less than 100! Please reenter precentages."
    return False
  return True
于 2013-05-31T04:59:57.653 に答える