import tkinter as tk from tkinter import ttk from tkinter import filedialog def calculate_skiing(): """ Вычисляет день, когда лыжник пробежит больше 20 км, и день, когда суммарный пробег превысит 100 км. """ try: initial_distance = float(initial_distance_entry.get()) increase_percentage = float(increase_percentage_entry.get()) if initial_distance <= 0: result_text.delete("1.0", tk.END) result_text.insert(tk.END, "Начальное расстояние должно быть больше 0.") return if increase_percentage <= 0: result_text.delete("1.0", tk.END) result_text.insert(tk.END, "Процент увеличения должен быть больше 0.") return distance = initial_distance total_distance = initial_distance day = 1 day_over_20 = None day_over_100 = None while True: if distance > 20 and day_over_20 is None: day_over_20 = day if total_distance > 100 and day_over_100 is None: day_over_100 = day if day_over_20 is not None and day_over_100 is not None: break day += 1 distance *= (1 + increase_percentage / 100) total_distance += distance if day > 1000: break result = "" if day_over_20 is not None: result += f"В день {day_over_20} лыжник пробежит больше 20 км.\n" else: result += "Лыжник никогда не пробежит больше 20 км.\n" if day_over_100 is not None: result += f"Суммарный пробег превысит 100 км в день {day_over_100}.\n" else: result += "Суммарный пробег никогда не превысит 100 км.\n" result_text.delete("1.0", tk.END) result_text.insert(tk.END, result) filepath = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Текстовые файлы", "*.txt"), ("Все файлы", "*.*")]) if filepath: try: with open(filepath, "w") as f: f.write(result) result_text.insert(tk.END, f"\nРезультат сохранен в файл: {filepath}") except Exception as e: result_text.insert(tk.END, f"\nОшибка при сохранении в файл: {e}") except ValueError: result_text.delete("1.0", tk.END) result_text.insert(tk.END, "Введите корректные числа.") root = tk.Tk() root.title("Расчет пробега лыжника") initial_distance_label = ttk.Label(root, text="Начальный пробег (км):") initial_distance_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W) initial_distance_entry = ttk.Entry(root) initial_distance_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.E) initial_distance_entry.insert(0, "10") increase_percentage_label = ttk.Label(root, text="Процент увеличения пробега:") increase_percentage_label.grid(row=1, column=0, padx=5, pady=5, sticky=tk.W) increase_percentage_entry = ttk.Entry(root) increase_percentage_entry.grid(row=1, column=1, padx=5, pady=5, sticky=tk.E) increase_percentage_entry.insert(0, "10") calculate_button = ttk.Button(root, text="Рассчитать", command=calculate_skiing) calculate_button.grid(row=2, column=0, columnspan=2, padx=5, pady=5) result_text = tk.Text(root, height=10, width=50) result_text.grid(row=3, column=0, columnspan=2, padx=5, pady=5) root.mainloop()