u22-26egorov 1 tuần trước cách đây
mục cha
commit
729e9706ee
1 tập tin đã thay đổi với 90 bổ sung0 xóa
  1. 90 0
      ОАиП/2024-25/36гр/Egorov

+ 90 - 0
ОАиП/2024-25/36гр/Egorov

@@ -0,0 +1,90 @@
+import tkinter as tk
+from tkinter import messagebox
+
+def solution(heights):
+    """
+    Определяет, превышает ли средний рост мальчиков средний рост девочек более чем на 10 см.
+
+    Args:
+        heights: Список (или кортеж) с ростом учеников.
+                 Положительные числа - рост девочек, отрицательные - рост мальчиков.
+
+    Returns:
+        Строка с результатом.
+    """
+    boys_heights = [h for h in heights if h < 0]
+    girls_heights = [h for h in heights if h >= 0]
+
+    if not boys_heights:
+        boys_avg = 0  # Чтобы не было ошибки при делении на 0
+    else:
+        boys_avg = sum(boys_heights) / len(boys_heights)
+
+    if not girls_heights:
+        girls_avg = 0
+    else:
+        girls_avg = sum(girls_heights) / len(girls_heights)
+
+
+    difference = boys_avg - girls_avg
+    if difference > 10:
+        return f"Средний рост мальчиков ({boys_avg:.2f} см) превышает средний рост девочек ({girls_avg:.2f} см) более чем на 10 см (разница: {difference:.2f} см)."
+    else:
+        return f"Средний рост мальчиков ({boys_avg:.2f} см) не превышает средний рост девочек ({girls_avg:.2f} см) более чем на 10 см (разница: {difference:.2f} см)."
+
+
+def calculate_and_save():
+    """
+    Получает данные из полей ввода, выполняет расчет и сохраняет результат в файл.
+    """
+    try:
+        heights_str = heights_entry.get()
+        heights = [float(h.strip()) for h in heights_str.split(',') if h.strip()]
+
+        # Проверка, что введены хотя бы какие-то данные
+        if not heights:
+            messagebox.showerror("Ошибка", "Пожалуйста, введите хотя бы один рост.")
+            return
+
+        result = solution(heights)
+        result_label.config(text=result)  # Отображаем результат
+
+        with open("height_result.txt", "w", encoding="utf-8") as file:
+            file.write(result + "\n")
+        messagebox.showinfo("Успех", "Результат сохранен в файл height_result.txt")
+
+    except ValueError:
+        messagebox.showerror("Ошибка", "Пожалуйста, введите корректные числа, разделенные запятыми. Рост мальчиков - отрицательные числа, девочек - положительные.")
+    except Exception as e:
+        messagebox.showerror("Ошибка", f"Произошла ошибка: {e}")
+
+# Создаем главное окно
+window = tk.Tk()
+window.title("Рост учеников")
+window.geometry("450x300")
+
+# Инструкции
+instruction_label = tk.Label(window,
+                             text="Введите рост учеников, разделяя значения запятыми.\nРост мальчиков - отрицательные числа, девочек - положительные:",
+                             wraplength=430,
+                             justify="left")
+instruction_label.pack(pady=10)
+
+# Поле ввода для данных
+heights_entry = tk.Entry(window, width=40)
+heights_entry.pack(pady=5)
+
+# Кнопка для расчета и сохранения
+calculate_button = tk.Button(window,
+                             text="Рассчитать и сохранить",
+                             command=calculate_and_save,
+                             bg="#4CAF50",
+                             fg="white")
+calculate_button.pack(pady=10)
+
+# Метка для отображения результата
+result_label = tk.Label(window, text="")
+result_label.pack(pady=10)
+
+# Запуск цикла обработки событий
+window.mainloop()