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