import tkinter as tk
from math import comb
# --- функции расчёта ---
def task_162():
try:
n = int(entry_n.get())
k = int(entry_k.get())
p = float(entry_p.get())
result = comb(n, k) * (p ** k) * ((1 - p) ** (n - k))
label_result.config(text=f"Ответ: {round(result, 5)}")
except:
label_result.config(text="Ошибка ввода")
def task_166():
try:
n = int(entry_n.get())
p = float(entry_p.get())
result = 1 - (1 - p) ** n
label_result.config(text=f"Ответ: {round(result, 5)}")
except:
label_result.config(text="Ошибка ввода")
# --- переключение задач ---
def select_task():
task = var.get()
if task == "162":
label_info.config(text="№162: вероятность ровно k успехов")
label_k.pack()
entry_k.pack()
button_calc.config(command=task_162)
elif task == "166":
label_info.config(text="№166: хотя бы одно попадание")
label_k.pack_forget()
entry_k.pack_forget()
button_calc.config(command=task_166)
# --- окно ---
root = tk.Tk()
root.title("Решение задач по вероятности")
root.geometry("350x300")
# выбор задачи
var = tk.StringVar(value="162")
tk.Label(root, text="Выбери задачу:").pack()
tk.Radiobutton(root, text="№162", variable=var, value="162", command=select_task).pack()
tk.Radiobutton(root, text="№166", variable=var, value="166", command=select_task).pack()
# описание
label_info = tk.Label(root, text="")
label_info.pack(pady=5)
# ввод n
tk.Label(root, text="n (испытания):").pack()
entry_n = tk.Entry(root)
entry_n.insert(0, "6")
entry_n.pack()
# ввод k (только для 162)
label_k = tk.Label(root, text="k (успехи):")
entry_k = tk.Entry(root)
entry_k.insert(0, "3")
# ввод p
tk.Label(root, text="p (вероятность):").pack()
entry_p = tk.Entry(root)
entry_p.insert(0, "0.3")
entry_p.pack()
# кнопка
button_calc = tk.Button(root, text="Посчитать")
button_calc.pack(pady=10)
# результат
label_result = tk.Label(root, text="")
label_result.pack()
# запуск начального состояния
select_task()
root.mainloop()