DmitrMakeev commited on
Commit
05f9668
·
verified ·
1 Parent(s): 526cb01

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -26
app.py CHANGED
@@ -682,6 +682,8 @@ def view_image():
682
 
683
 
684
 
 
 
685
  TOMATO_PROFILE = {
686
  'N (NO3-)': 200,
687
  'N (NH4+)': 20,
@@ -692,17 +694,6 @@ TOMATO_PROFILE = {
692
  'S': 100
693
  }
694
 
695
- # Обновленные коэффициенты для перевода ppm в mS/cm (более точные)
696
- EC_FACTORS = {
697
- 'N (NO3-)': 0.71,
698
- 'N (NH4+)': 0.72,
699
- 'P': 0.74,
700
- 'K': 0.70,
701
- 'Mg': 0.61,
702
- 'Ca': 0.66,
703
- 'S': 0.53
704
- }
705
-
706
  fertilizers_db = {
707
  "Кальциевая селитра": {
708
  "N (NO3-)": 0.118,
@@ -731,6 +722,7 @@ class NutrientCalculator:
731
  self.volume = volume_liters
732
  self.results = {}
733
  self.final_profile = {}
 
734
 
735
  def calculate(self, profile):
736
  self.final_profile = profile.copy()
@@ -803,26 +795,43 @@ class NutrientCalculator:
803
  self.final_profile['N (NH4+)'] = 0
804
 
805
  def calculate_ec(self):
806
- """Правильный расчёт EC (делим ppm на коэффициент)"""
807
- total_ppm = sum(self.final_profile.values())
808
- return round(total_ppm / 700, 2) # 700 - стандартный коэффициент
809
-
810
- def calculate_total_ppm(self):
811
- """Расчет общего количества ppm в растворе"""
812
- return sum(TOMATO_PROFILE.values())
813
 
814
  def print_report(self):
815
  ec = self.calculate_ec()
816
- total_ppm = self.calculate_total_ppm()
817
- print(f"EC: {ec} mS/cm (при 700 ppm = 1 mS/cm)")
818
-
819
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
 
821
  # Пример использования
822
- calc = NutrientCalculator(volume_liters=10)
823
- results = calc.calculate(TOMATO_PROFILE.copy())
824
- calc.print_report()
825
-
826
 
827
 
828
 
 
682
 
683
 
684
 
685
+ from tabulate import tabulate
686
+
687
  TOMATO_PROFILE = {
688
  'N (NO3-)': 200,
689
  'N (NH4+)': 20,
 
694
  'S': 100
695
  }
696
 
 
 
 
 
 
 
 
 
 
 
 
697
  fertilizers_db = {
698
  "Кальциевая селитра": {
699
  "N (NO3-)": 0.118,
 
722
  self.volume = volume_liters
723
  self.results = {}
724
  self.final_profile = {}
725
+ self.total_ppm = sum(TOMATO_PROFILE.values())
726
 
727
  def calculate(self, profile):
728
  self.final_profile = profile.copy()
 
795
  self.final_profile['N (NH4+)'] = 0
796
 
797
  def calculate_ec(self):
798
+ """Расчет электропроводимости (700 ppm 1 mS/cm)"""
799
+ return round(self.total_ppm / 700, 2)
 
 
 
 
 
800
 
801
  def print_report(self):
802
  ec = self.calculate_ec()
803
+
804
+ print("\n" + "="*50)
805
+ print(f"РАСЧЕТ ПИТАТЕЛЬНОГО РАСТВОРА ДЛЯ {self.volume} ЛИТРОВ")
806
+ print("="*50)
807
+
808
+ print(f"\nОБЩАЯ КОНЦЕНТРАЦИЯ: {self.total_ppm} ppm")
809
+ print(f"ЭЛЕКТРОПРОВОДИМОСТЬ (EC): {ec} mS/cm (при 25°C)")
810
+
811
+ print("\nРЕКОМЕНДУЕМЫЕ УДОБРЕНИЯ:")
812
+ table = []
813
+ for fert, data in self.results.items():
814
+ table.append([
815
+ fert,
816
+ f"{data['граммы']:.3f} г",
817
+ f"{data['миллиграммы']} мг",
818
+ f"+{list(data.keys())[2]} {data[list(data.keys())[2]]} ppm"
819
+ ])
820
+ print(tabulate(table, headers=["Удобрение", "Граммы", "Миллиграммы", "Добавит"]))
821
+
822
+ print("\nОСТАТОЧНЫЙ ДЕФИЦИТ:")
823
+ deficit = {k: v for k, v in self.final_profile.items() if v > 0.1}
824
+ if deficit:
825
+ for el, val in deficit.items():
826
+ print(f" {el}: {round(val, 1)} ppm")
827
+ else:
828
+ print(" Все элементы полностью покрыты")
829
 
830
  # Пример использования
831
+ if __name__ == "__main__":
832
+ calc = NutrientCalculator(volume_liters=10)
833
+ results = calc.calculate(TOMATO_PROFILE.copy())
834
+ calc.print_report()
835
 
836
 
837