Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -825,52 +825,52 @@ class NutrientCalculator:
|
|
825 |
def calculate_ec(self):
|
826 |
return round(self.total_ec, 2)
|
827 |
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
|
875 |
if __name__ == "__main__":
|
876 |
try:
|
|
|
825 |
def calculate_ec(self):
|
826 |
return round(self.total_ec, 2)
|
827 |
|
828 |
+
def print_report(self):
|
829 |
+
try:
|
830 |
+
print("\n" + "="*60)
|
831 |
+
print("ПРОФИЛЬ ПИТАТЕЛЬНОГО РАСТВОРА (ИТОГО):")
|
832 |
+
print("="*60)
|
833 |
+
table = [[el, round(self.actual_profile[el], 1)] for el in self.actual_profile]
|
834 |
+
print(tabulate(table, headers=["Элемент", "ppm"]))
|
835 |
+
|
836 |
+
print("\nИсходный расчёт азота:")
|
837 |
+
for form, val in self.initial_n_profile.items():
|
838 |
+
print(f" {form}: {round(val, 1)} ppm")
|
839 |
+
|
840 |
+
print("\n" + "="*60)
|
841 |
+
print(f"РАСЧЕТ ДЛЯ {self.volume} ЛИТРОВ РАСТВОРА")
|
842 |
+
print("="*60)
|
843 |
+
print(f"Общая концентрация: {round(sum(self.actual_profile.values()), 1)} ppm") # Исправлено здесь
|
844 |
+
print(f"EC: {self.calculate_ec()} mS/cm")
|
845 |
+
|
846 |
+
print("\nРЕКОМЕНДУЕМЫЕ УДОБРЕНИЯ:")
|
847 |
+
fert_table = []
|
848 |
+
for fert, data in self.results.items():
|
849 |
+
adds = [f"+{k}: {v:.1f} ppm" for k, v in data.items() if k.startswith('внесет')]
|
850 |
+
fert_table.append([
|
851 |
+
fert,
|
852 |
+
round(data['граммы'], 3),
|
853 |
+
data['миллиграммы'],
|
854 |
+
round(data['вклад в EC'], 3),
|
855 |
+
"\n".join(adds)
|
856 |
+
])
|
857 |
+
print(tabulate(fert_table,
|
858 |
+
headers=["Удобрение", "Граммы", "Миллиграммы", "EC (мСм/см)", "Добавит"]))
|
859 |
+
|
860 |
+
print("\nОСТАТОЧНЫЙ ДЕФИЦИТ:")
|
861 |
+
deficit = {
|
862 |
+
k: round(self.target_profile[k] - self.actual_profile[k], 1)
|
863 |
+
for k in self.target_profile
|
864 |
+
if abs(self.target_profile[k] - self.actual_profile[k]) > 0.1
|
865 |
+
}
|
866 |
+
if deficit:
|
867 |
+
for el, val in deficit.items():
|
868 |
+
print(f" {el}: {val} ppm")
|
869 |
+
else:
|
870 |
+
print(" Все элементы покрыты полностью")
|
871 |
+
except Exception as e:
|
872 |
+
print(f"Ошибка при выводе отчёта: {str(e)}")
|
873 |
+
raise
|
874 |
|
875 |
if __name__ == "__main__":
|
876 |
try:
|