123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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()
|