Фрагмент для ознакомления
geometry(str(SIZEX) + "x" + str(SIZEY)) # Задаемразмерыwindow.resizable(width = False, height = False) # ЗапрещаемизменениеразмеровокнаifMaxFreq > 0: # Если есть, что рисоватьcanvas = Canvas(window) # Получаем холст для рисования# Рисуемcanvas.create_rectangle(OFFSX, OFFS, SIZEX-OFFS, SIZEY-OFFS, outline="#000") # Главнаярамка# Рисуем пометки на боковых границах и значения слеваky = (SIZEY-3*OFFS)/MaxFreq # Масштабный коэффициент по вертикалиforiinrange(MaxFreq + 1): # Цикл по значениям частотy = 2*OFFS + ky*(MaxFreq - i) # Находим вертикальную координатуcanvas.create_line(OFFSX-3, y, OFFSX+3, y) # Рисуем пометки на краях поляcanvas.create_line(SIZEX-OFFS-3, y, SIZEX-OFFS+3, y) # Рисуем пометки на краях поляcanvas.create_text(int(OFFSX/2), y+1, text=str(i)) # Пишемзначениечастотыsx = (SIZEX - OFFSX - OFFS)/N/2 # Ширина одного столбика # Рисуем и подписываем столбикиforiinrange(N): # Цикл по градациям x0 = OFFSX + 2*i*sx # Начальныйx столбикаcanvas.create_rectangle(int(x0 + 0.5*sx), SIZEY-OFFS,int(x0 + 1.5*sx), int(2*OFFS + ky*(MaxFreq - Freqs[i])),outline="#000", fill="#00f") # Рисуем столбик синим цветомcanvas.create_text(int(x0 + sx), int(SIZEY - 0.5*OFFS), anchor="center", text=Texts[i]) # Пишемобозначениестолбикаcanvas.pack(fill=BOTH, expand=1) # Отправляем графику в окноwindow.mainloop() # Отдаем управление окнуСкриншоты работы программыРассмотрим сперва обычный случай, когда вводятся содержательные данные о росте: 155, 159, 161, 163, 166, 172, 172, 173, 174, 177, 178, 180, 185.Скриншот консольного окна приведен на , скриншот графического окна показан на . Хорошо видно, что гистограмма соответствует введенным данным.Рис. . Скриншот консольного окна при вводе «обычных» данныхРис. . Скриншот соответствующего окна с гистограммойРассмотрим теперь случай ввода тех же данных, но с одной ошибкой – в качестве дополнительного значения вводилось отрицательное число. На рис. 6 хорошо видно, что программа выдала соответствующее сообщение и возобновила ввод. При этом гистограмма оказалась, разумеется, той же самой, что и на рис. 5.Рис. . Пример ввода тех же данных с дополнительным отрицательным числомДалее проверим программу на устойчивость работы.Введем данные, которые будут располагаться в одной единственной градации гистограммы:171, 172, 173, 174, 174.5.Вид консольного окна при таком вводе показан на рис. 7, вид соответствующей гистограммы показан на рис. 8.Хорошо видно, что программа успешно прошла тест – в гистограмме единственный столбик высотой 5 (количество введенных значений роста) в позиции [170;175).Рис. . Ввод данных, входящих в единственную градациюРис. . Вид соответствующей гистограммы с одним столбикомИ еще один тест на устойчивость проведем – теперь вообще не введем данные о росте, сразу закончив ввод указанием нуля.Вид соответствующего консольного окна показан на рис. 9.Рис. . Отсутствие ввода данных о ростеДанному случаю будет соответствовать отсутствие гистограммы, то есть получаем пустое графическое окно, как и показано на рис. 10.Рис. . Окно гистограммы при отсутствии данныхТаким образом, проведенные испытания, проиллюстрированные выше скриншотами, показали, что программа работает устойчиво, адекватно реагирует на правильные и неправильные данные, корректно строит гистограмму. То есть, результаты тестирования надо признать успешными.ЗАКЛЮЧЕНИЕИтак, в данном курсовом проекте:Изучены основы языка Python, в том числе возможности его графической библиотеки tkinter.Разработаны общий алгоритм и соответствующая ему блок-схема для задачи построения столбиковой диаграммы (гистограммы) распределения учащихся по градациям роста.Разработанный алгоритм переведен на язык Python, в результате чего получили работающую программу, выполняющую требуемую обработку данных.Проведено успешное тестирование полученной программы в обычных и «крайних» случаях, ошибки, которые выявлялись в ходе тестирования, были исправлены.Все изложенное позволяет говорить о том, что поставленная во введении цель достигнута, все поставленные задачи выполнены.СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ1. Любанович, Билл. Простой Python. Современный стиль программирования. 2-е издание. Питер, 2021.2. Мэтиз, Эрик. Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. Питер, 2022.3. Основы Python. URL: https://academy.yandex.ru/handbook/python (Дата обращения: 11.11.2023)4. Шоу, Зед. Легкий способ выучить Python 3. Бомбора, 2021.5. The Python Language Reference. URL: https://docs.python.org/3/reference/index.html (Датаобращения: 11.11.2023)
1. Любанович, Билл. Простой Python. Современный стиль программирования. 2-е издание. Питер, 2021.
2. Мэтиз, Эрик. Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. Питер, 2022.
3. Основы Python. URL: https://academy.yandex.ru/handbook/python (Дата обращения: 11.11.2023)
4. Шоу, Зед. Легкий способ выучить Python 3. Бомбора, 2021.
5. The Python Language Reference. URL: https://docs.python.org/3/ reference/index.html (Дата обращения: 11.11.2023)