# 11.128. В массиве хранится информация о среднедневной тем-пературе за каждый день июля. Определить количество самых прохладных дней в этом месяце. import tkinter as tk from tkinter import ttk from tkinter import filedialog from tkinter import messagebox import random class TemperatureAnalyzer: def __init__(self, master): self.master = master master.title("Анализ температуры июля") self.temperatures = [] self.data_label = ttk.Label(master, text="Данные о температуре (через запятую):") self.data_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W) self.temperatures_entry = ttk.Entry(master, width=40) self.temperatures_entry.grid(row=1, column=0, padx=5, pady=5) self.analyze_button = ttk.Button(master, text="Анализировать", command=self.analyze) self.analyze_button.grid(row=2, column=0, padx=5, pady=5) self.random_button = ttk.Button(master, text="Сгенерировать случайные данные", command=self.generate_random) self.random_button.grid(row=3, column=0, padx=5, pady=5) self.save_button = ttk.Button(master, text="Сохранить в файл", command=self.save_results) self.save_button.grid(row=4, column=0, padx=5, pady=5) self.result_label = ttk.Label(master, text="Результат:") self.result_label.grid(row=5, column=0, padx=5, pady=5, sticky=tk.W) self.result_text = tk.StringVar() self.result_display = ttk.Label(master, textvariable=self.result_text) self.result_display.grid(row=6, column=0, padx=5, pady=5, sticky=tk.W) def solution(self, temperatures): """Определяет количество самых прохладных дней в июле.""" if not temperatures: return "Нет данных о температуре." min_temp = min(temperatures) coolest_days_count = temperatures.count(min_temp) return f"Количество самых прохладных дней: {coolest_days_count}" def analyze(self): """Анализирует данные о температуре и отображает результат.""" try: data = self.temperatures_entry.get() self.temperatures = [float(temp.strip()) for temp in data.split(",") if temp.strip()] if len(self.temperatures) != 31: messagebox.showerror("Ошибка", "Пожалуйста, введите 31 значение температуры.") return result = self.solution(self.temperatures) self.result_text.set(result) except ValueError: messagebox.showerror("Ошибка", "Неверный ввод. Пожалуйста, введите числа, разделенные запятыми.") except Exception as e: messagebox.showerror("Ошибка", f"Произошла непредвиденная ошибка: {e}") def generate_random(self): """Генерирует случайные данные о температуре для июля (31 день).""" self.temperatures = [random.uniform(15, 30) for _ in range(31)] self.temperatures_entry.delete(0, tk.END) self.temperatures_entry.insert(0, ", ".join(f"{temp:.1f}" for temp in self.temperatures)) def save_results(self): """Сохраняет данные о температуре и результат анализа в файл.""" filepath = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Текстовые файлы", "*.txt"), ("Все файлы", "*.*")]) if filepath: try: with open(filepath, "w") as outfile: outfile.write("Данные о температуре:\n") outfile.write(", ".join(f"{temp:.1f}" for temp in self.temperatures) + "\n\n") outfile.write("Результат анализа:\n") outfile.write(self.result_text.get() + "\n") messagebox.showinfo("Успех", f"Результаты сохранены в {filepath}") except Exception as e: messagebox.showerror("Ошибка", f"Не удалось сохранить результаты: {e}") root = tk.Tk() app = TemperatureAnalyzer(root) root.mainloop()