ЗАДАЧА 1
Дано список прізвищ учасників олімпіади з інформатики та результати їхньої участі в олімпіаді, що мають значення від 0 до 100 у вигляді десяткового дробу з одним десятковим знаком. Визначити:
• список переможців олімпіади, а саме, тих, що мають результат більший за середній бал;
• учасників, що отримали більше 50 балів;
• учасників, що мають кількість балів, меншу від n, де n — значення, введене користувачем з використанням вікна введення даних.
1. Завантажте файл заготовку Задача_35_1.py . Файл заготовка містить команди створення інтерфейсу, списків учнів та результати їхньої участі в олімпіаді, а також обчислення середнього бала усіх учасників.
2. Запустіть програму на виконання та проаналізуйте її програмний код.
from tkinter import*
from random import*
window=Tk()
window.geometry('500x370')
window.title('Результати олімпіади')
#написи
L1=Label(text='Учасники олімпіади')
L1.place(x=20,y=10)
L2=Label(text='Результат')
L2.place(x=160,y=10)
L3=Label()
L3.place(x=250,y=10)
#кнопки
Btn1=Button(text='Переможці олімпіади')
Btn1.place(x=20,y=270,width=210)
Btn2=Button(text='Більше 50 балів')
Btn2.place(x=20,y=300,width=210)
Btn3=Button(text='Менше n')
Btn3.place(x=20,y=330,width=210)
#списки
Lbox_name=Listbox(height=12)
Lbox_name.place(x=20,y=30)
Lbox_grade=Listbox(height=12,justify=CENTER)
Lbox_grade.place(x=160,y=30,width=70)
Lbox_rez=Listbox(height=12)
Lbox_rez.place(x=250,y=30)
#учасники олімпіади
name=['Антоненко','Балацький','Волошина','Гнатов','Діденко','Кротенко',
'Литвиненко','Макаров','Новікова','Орленко','Петренко','Романова']
#результати учасників
grade=[]
size=len(name)
for i in range(size):
Lbox_name.insert(END,name[i])
a=round(uniform(0,100),1)
grade.append(a)
Lbox_grade.insert(END,grade[i])
#середній бал учасників
#обчислення
avg_grade=round(sum(grade)/len(grade),1)
#напис Середній бал:
L_avg=Label(text='Середній бал:')
L_avg.place(x=20,y=240)
#виведення результату
L_avg_rez=Label(text=avg_grade,relief=SUNKEN)
L_avg_rez.place(x=120,y=240,width=60)
mainloop()
3. Додайте команди обробника події натиснення кнопки Переможці олімпіади.
def btn1_click():
#встановлення напису над третім списком
L3['text']='Переможці олімпіади'
#очищення списку від попередніх написів
Lbox_rez.delete(0,END)
for i in range(12):
#перевірка умови, якщо поточний результат більший за середнього значення
if grade[i]>avg_grade:
#якщо умова виконується, додати прізвище учасника в кінець списку
Lbox_rez.insert(END,name[i])
Btn1=Button(text='Переможці олімпіади',command=btn1_click)
5*. Обробники подій до кнопок Більше 50 та Менше n створіть самостійно.Додайте команди виклику цих обробників подій у відповідних конструкторах.
список переможців олімпіади, а саме, тих, що мають результат більший за середній бал;
учасників, що отримали більше 50 балів;
учасників, що мають кількість балів, меншу від n, де n — значення, введене користувачем з використанням вікна введення даних.