Загрузка данных


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