Написати код на python
Створити програму "табель" за допомогою модуля tkinter у вигляді лінійної таблиці в якій задано предмети, а функціональні клавіші дозволяють визначити бал з певного предмета, найбільший чи найменьший бал, кількість предметів, та середній бал успішності.
Предмети: інформатика, правознавство, українська мова, українська література, англійська мова, геометрія, алгебра, всесвітня історія, фіична культура, трудове навчання, мистецтво, основи здоровʼя, хімія, географія, фізика, зарубіжна література, біологія та історія україни
Оцінки для кожного генерувати рандомним чином в діапазоні від 8 до 12, у різній кількості для кожного предмета у діапазоні від 5 до 15
Answers & Comments
Ответ:
Ось код програми "табель" на Python з використанням модуля tkinter:
```
import tkinter as tk
import random
window = tk.Tk()
window.title("Табель")
subjects = ["інформатика", "правознавство", "українська мова", "українська література", "англійська мова",
"геометрія", "алгебра", "всесвітня історія", "фізична культура", "трудове навчання", "мистецтво",
"основи здоров'я", "хімія", "географія", "фізика", "зарубіжна література", "біологія", "історія України"]
# generate random scores for each subject
scores = {}
for subject in subjects:
num_scores = random.randint(5, 15)
subject_scores = [random.randint(8, 12) for _ in range(num_scores)]
scores[subject] = subject_scores
# create labels for each subject
labels = {}
for i, subject in enumerate(subjects):
label = tk.Label(window, text=subject, font=("Arial", 12))
label.grid(row=i+1, column=0)
labels[subject] = label
# create buttons to calculate min, max, num_subjects, and avg
def get_min(subject):
min_score = min(scores[subject])
label_min.config(text=f"найменший бал: {min_score}")
def get_max(subject):
max_score = max(scores[subject])
label_max.config(text=f"найбільший бал: {max_score}")
def get_num_subjects():
num_subjects = len(subjects)
label_num.config(text=f"кількість предметів: {num_subjects}")
def get_avg(subject):
avg_score = sum(scores[subject]) / len(scores[subject])
label_avg.config(text=f"середній бал: {avg_score:.2f}")
for i, subject in enumerate(subjects):
button_min = tk.Button(window, text="найменший", command=lambda s=subject: get_min(s))
button_min.grid(row=i+1, column=1)
button_max = tk.Button(window, text="найбільший", command=lambda s=subject: get_max(s))
button_max.grid(row=i+1, column=2)
button_avg = tk.Button(window, text="середній", command=lambda s=subject: get_avg(s))
button_avg.grid(row=i+1, column=3)
# add labels for min, max, num_subjects, and avg
label_min = tk.Label(window, text="найменший бал: -", font=("Arial", 12))
label_min.grid(row=len(subjects)+2, column=1)
label_max = tk.Label(window, text="найбільший бал: -", font=("Arial", 12))
label_max.grid(row=len(subjects)+3, column=1)
label_num = tk.Label(window, text="кількість предметів: -", font=("Arial", 12))
label_num.grid(row=len(subjects)+2, column=2)
label_avg = tk.Label(window, text="середній бал: -", font=("Arial", 12))
label_avg.grid(row=len(subjects)+3, column=2)
window.mainloop()
```
Програма створює вікно з табелем предметів та функціональними кнопками для обчислення мінімального балу, максимального балу, кількості предметів та середнього балу. Для кожного предмета генерується випадкова кількість балів в діапазоні від 8 до 12, у різній кількості в діапазоні від 5 до 15. При натисканні на відповідну кнопку для певного предмета, програма виводить результат обчислення на екран.
Verified answer
Ответ:
Ось приклад коду, що створює програму "табель" за допомогою модуля tkinter у вигляді лінійної таблиці:
```python
import tkinter as tk
import random
# список предметів
subjects = ['інформатика', 'правознавство', 'українська мова', 'українська література',
'англійська мова', 'геометрія', 'алгебра', 'всесвітня історія', 'фізична культура',
'трудове навчання', 'мистецтво', 'основи здоровʼя', 'хімія', 'географія',
'фізика', 'зарубіжна література', 'біологія', 'історія україни']
# функція для генерування оцінок
def generate_grades():
grades = []
for i in range(random.randint(5, 15)):
grades.append(random.randint(8, 12))
return grades
# функція для обрахунку середнього балу
def calculate_average(grades):
return sum(grades) / len(grades)
# створення головного вікна
root = tk.Tk()
root.title("Табель")
# створення таблиці
table = tk.Frame(root)
table.pack()
# створення заголовків стовпців
tk.Label(table, text="Предмет").grid(row=0, column=0)
tk.Label(table, text="Оцінки").grid(row=0, column=1)
# заповнення таблиці даними
for i, subject in enumerate(subjects):
# генерування оцінок для кожного предмета
grades = generate_grades()
# вивід назви предмета в таблиці
tk.Label(table, text=subject).grid(row=i+1, column=0)
# вивід оцінок для кожного предмета в таблиці
for j, grade in enumerate(grades):
tk.Label(table, text=str(grade)).grid(row=i+1, column=j+1)
# вивід середнього балу для кожного предмета в таблиці
average_grade = calculate_average(grades)
tk.Label(table, text="{:.2f}".format(average_grade)).grid(row=i+1, column=len(grades)+1)
# функція для знаходження мінімальної оцінки
def find_min_grade():
min_grade = 12
for grades in grades_list:
if min(grades) < min_grade:
min_grade = min(grades)
return min_grade
# функція для знаходження максимальної оцінки
def find_max_grade():