Главная страница

Разработка web-приложения. ЛР по ВТП для ВТ (Питон). Методические указания к лабораторным работам для студентов, обучающихся в бакалавриате по направлениям


Скачать 2.07 Mb.
НазваниеМетодические указания к лабораторным работам для студентов, обучающихся в бакалавриате по направлениям
АнкорРазработка web-приложения
Дата18.05.2022
Размер2.07 Mb.
Формат файлаdoc
Имя файлаЛР по ВТП для ВТ (Питон).doc
ТипМетодические указания
#536632
страница8 из 10
1   2   3   4   5   6   7   8   9   10

Обработка матриц

Цель работы: изучение стандартных средств Python для представления и обработки матричных данных.
Введение

Графический пользовательский интерфейс, реализуемый современными системами программирования, позволяет визуализировать обработку матриц, что делает этот процесс более наглядным и информативным. Некоторые языки включают готовые средства потображения матриц, например виджет StringGrid в ИСП Delphi(Lazarus). В модуле tkinter аналогичных средств нет, поэтому приходится искусственно создавать матричную структуру. Для этого можно использовать различные виджеты модуля: Entry, Button, Label и др. Такой подход обеспечивает требуемый результат, но вызывает определенные трудности, если в ходе работы программы требуется постоянно перестаивать матрицу: менять ее размер и/ли содержимое. В этом случае предпочтительнее визуализировать матрицу на канве Canvas модуля, а ее содержимое сохранять в виде перестраиваемого двумерного массива. Пример формирования такой матрицы размером 4х6, заполняемой случайными значениями приведен на врезке ниже:

from tkinter import *

import random # для генерации случайных чисел загружается модуль random
root = Tk()

root.geometry('700x500')
c = Canvas(root, width=600, height=400, background="white")

c.place(x = 10, y = 10)
уk = 0 # начальные значения координат У элементов матрицы на канве
m = [] # объявление массива, сначала как одномерного

for i in range(4): # цикл по строкам матрицы

m.append([]) # добавление второй размерности массива

yk +=40 # смещение очередной строки матрицы вниз по вертикали

xk = 0 # начальные значения координат Х элементов матрицы на канве

for j in range(6): # цикл по столбцам матрицы

ct = random.randint(0, 100) # генерация целого случайного числа в диапазоне 0  100

m[i].append(ct) # добавление сгенерированного числа в матрицу

xk +=40 # смещение очередного элемента матрицы вправо по горизонтали

c.create_text(xk, yk, text = ct) # вывод на канву очередного элемента матрицы

root.mainloop()
В ходе текущее работы потребуется выделить определенные элементы таблицы – столбцы, строки или ячейки – прямоугольными рамками. Для этого можно использовать графические возможности канвы, которые рассмотрены ранее, в предыдущих лабораторных работах.
Выполнение лабораторной работы

I. В соответствии с вариантом создать проект отображения средствами компонента Canvas (допускается использование других виджетов) матрицы заданного размера. Элементы матрицы формируются генератором случайных чисел в диапазоне -100..100. Занесение исходных значений в матрицу производится по двойному щелчку мыши по канве. Если в матрице находится несколько искомых значений, то все они выделяются требуемым образом.

В-1. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается командами главного меню. В правом дополнительном столбце выводится сумма цифр в каждой строке. По нажатию кнопки SpeedButton строка с наименьшей суммой, выделяется красной рамкой.

В-2. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается командой главного меню (строки) и контекстного меню (столбцы). В нижней дополнительной строке выводится сумма цифр в каждом столбце. По команде главного меню красной рамкой выделяется столбец с наименьшей суммой.

В-3. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..11)). Конкретный размер задается командами контекстного меню. По еще одной команде контекстного меню наименьший и наибольший по абсолютной величине элементы матрицы отображаются рамками разного цвета.

В-4. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..11)). Конкретный размер задается командой контекстного меню (строки) и списком ListBox (столбцы). В правом дополнительном столбце выводится сумма нечетных цифр каждой строки. При щелчке правой клавишей мыши по форме строка с наименьшей суммой выделяется синей рамкой.

В-5. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(9..11)). Конкретный размер задается списком ListBox. В правом дополнительном столбце выводится сумма четных цифр каждой строки. При нажатии клавиши Enter строка с наибольшей суммой выделяется зеленой рамкой.

В-6. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается списком ListBox (строки) и радионабором (столбцы). В правом дополнительном столбце выводится произведение нечетных цифр элементов каждой строки. При щелчке мышью по форме строка с наибольшим произведением выделяется синей рамкой.

В-7. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается радионаборами. В правом дополнительном столбце выводится произведение четных цифр каждой строки. По команде главного меню строка с наименьшим произведением выделяется зеленой рамкой.

В-8. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается радионабором (строки) и линейкой Scale (столбцы). В нижней дополнительной строке выводится произведение элементов каждого столбца, содержащих четные цифры. По команде контекстного меню столбец с наименьшим произведением выделяется красной рамкой.

В-9. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается линейками Scale. В правом дополнительном столбце выводится количество единиц в каждой строке. По нажатию кнопки Button строка с наименьшим количеством выделяется желтой рамкой.

В-10. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..10)). Конкретный размер задается линейками Scale (строки) и списком ComboBox (столбцы). В нижней дополнительной строке выводится количество элементов, содержащих 3 в каждом столбце. При щелчке правой клавиши мыши по канве столбец с наибольшим количеством таких элементов охватывается красной рамкой.

В-11. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..9)). Конкретный размер задается списками ComboBox. Клавишей Enter наибольший и наименьший элементы матрицы выделяются разными цветами, отличными от основного цвета.

В-12. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..11)). Конкретный размер задается главным меню (строки) и списком ListBox (столбцы). В нижней дополнительной строке выводится сумма нечетных цифр в каждом столбце. По щелчку мыши по форме выделяется столбец с наименьшей суммой.

В-13. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается главным меню (строки) и радионабором (столбцы). В правом дополнительном столбце выводится количество нечетных чисел в каждой строке. При нажатии пробела строка с наименьшим количеством таких чисел выделяется красной рамкой.

В-14. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается главным меню (строки) и линейкой Scale (столбцы). Внизу в дополнительной строке выводится число элементов в каждом столбце, в которых встречается цифра 5. По команде главного меню столбец с наибольшим количеством таких элементов выделяется зеленой пунктирной рамкой.

В-15. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается главным меню (строки) и списком ComboBox (столбцы). Внизу в дополнительной строке выводится наибольший отрицательный элемент в каждом столбце. По команде контекстного меню столбец с наибольшим таким элементом выделяется красной рамкой.

В-16. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается контекстным меню (строки) и списком ListBox (столбцы). В правом дополнительном столбце выводится наибольший нечетный элемент в каждой строке. При нажатии кнопки строка с наибольшим таким элементом выделяется зеленой рамкой.

В-17. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..10)). Конкретный размер задается контекстным меню (строки) и радионабором (столбцы). Внизу в дополнительной строке выводится число цифр в каждом столбце (минус не учитывается). При выходе мыши из пространства канвы столбец с наименьшим таким числом выделяется зеленой рамкой.

В-18. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..9)). Конкретный размер задается контекстным меню (строки) и линейкой Scale (столбцы). Внизу в дополнительной строке выводится количество четных цифр в каждом столбце. При нажатии клавиши Enter столбец с наибольшим таким количество выделяется синей рамкой.

В-19. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..11)). Конкретный размер задается контекстным меню (строки) и списком ComboBox (столбцы). Внизу в дополнительной строке выводится количество цифр в отрицательных элементах каждого столбца. По команде главного меню столбец с наибольшим таким количеством выделяется синей рамкой.

В-20. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..10)). Конкретный размер задается списком ListBox (строки) и радионабором (столбцы). Внизу в дополнительной строке выводится произведение нечетных цифр в каждом столбце. По команде контекстного меню столбец с наименьшим произведением выделяется коричневой рамкой.

В-21. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..11)). Конкретный размер задается списком ListBox (строки) и линейкой Scale (столбцы). Внизу в дополнительной строке выводится сумма элементов, включающих четные цифры, в каждом столбце. При нажатии любой клавиши на клавиатуре столбец с наименьшей суммой элементов выделяется красной рамкой.

В-22. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(9..11 )). Конкретный размер задается списком ListBox (строки) и списком ComboBox (столбцы). Внизу в дополнительной строке выводится сумма элементов, включающих нечетные цифры, в каждом столбце. При изменении размера формы столбец с наибольшей по абсолютной величине суммой выделяется красной рамкой.

В-23. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается радионабором (строки) и линейкой Scale (столбцы). Справа в дополнительном столбце выводится количество четных цифр в каждой строке. При щелчке мыши по форме строка с наибольшим таким количеством выделяется зеленой рамкой.

В-24. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается радионабором (строки) и списком ComboBox (столбцы). Справа в дополнительном столбце выводится произведение четных цифр в каждой строке. При нажатии клавиши Enter строка с наименьшим таким количеством выделяется синей рамкой.

В-25. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается линейкой Scale (строки) и списком ComboBox (столбцы). Внизу в дополнительной строке выводится количество цифр 5 в числах столбца. При нажатии пробела столбец с наименьшим таким количеством выделяется синей рамкой.

В-26. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается списками ComboBox. Внизу в дополнительной строке выводится количество цифр в отрицательных элементах каждого столбца. По команде главного меню столбец с максимальным количеством выделяется пунктирной красной рамкой.

В-27. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается радионаборами. В правом дополнительном столбце выводится количество цифр 1 в каждой строке. По команде главного меню строка с наименьшим количеством выделяется зеленой рамкой.

В-28. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(9..11)). Конкретный размер задается списками ListBox. В правом дополнительном столбце выводится сумма элементов каждой строки. При нажатии клавиши Enter строка с суммой, наиболее близкой к нулю, выделяется зеленой рамкой.

В-29. Дана целочисленная матрица {Aij} i=1..n, j=1..m (nє(7..11), mє(8..10)). Конкретный размер задается командой главного меню (строки) и контекстного меню (столбцы). В нижней дополнительной строке выводится сумма элементов в каждом столбце. По команде главного меню черной рамкой выделяется столбец с суммой, наиболее близкой к нулю.

В-30. Дана целочисленная матрица {Aij} i=1..n, j=1..m (nє(7..11), mє(9..12)). Конкретный размер задается командой главного меню (столбцы) и контекстного меню (строки). Если количество строк не меньше числа столбцов, то по команде контекстного меню черной рамкой выделяется строка со значением в главной диагонали, наиболее близким к нулю. В противном случае в заголовке формы указывается, что задача не выполнима.

В-31. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается списком ListBox (столбцы) и радионабором (строки). В правом дополнительном столбце выводится произведение наибольшего и наименьшего элементов каждой строки. При щелчке мышью по форме строка с наименьшим произведением выделяется синей рамкой.

В-32. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается радионабором (строки) и виджетом SpinBox (столбцы). В нижней дополнительной строке выводится произведение наибольшего и наименьшаго элементов каждого столбца. По команде контекстного меню столбец с наибольшим произведением выделяется красной рамкой.

В-33. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается радионаборами. В правом дополнительном столбце выводится количество нечетных цифр в каждой строке. По команде главного меню строка с наименьшим количеством выделяется зеленой рамкой.

В-34. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается радионабором (строки) и линейкой ScrollBar (столбцы). В нижней дополнительной строке выводится количество нечетных цифр в каждом столбце. По команде контекстного меню столбец с наименьшим таким количеством выделяется красной рамкой.

В-35. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается линейками Scale. В правом дополнительном столбце выводится количество четных цифр в каждой строке. По нажатию кнопки Button строка с наименьшим таким количеством выделяется желтой рамкой.

В-36. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..10)). Конкретный размер задается линейками Scale (строки) и списком ComboBox (столбцы). В нижней дополнительной строке выводится количество четных цифр в каждом столбце. При изменении размера формы столбец с наибольшим таким количеством охватывается красной рамкой.

В-37. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..10)). Конкретный размер задается линейками Scale (строки) и списком ComboBox (столбцы). В нижней дополнительной строке выводится количество элементов, которые делятся на 3, в каждом столбце. При заходе мыши на виджет Scale столбец с наибольшим таким количеством охватывается красной рамкой.

В-38. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается линейками Scale. В правом дополнительном столбце выводится количество элементов, которые делятся на 3, в каждой строке. По нажатию кнопки Button строка с наименьшей такой цифрой выделяется желтой рамкой.

В-39. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается радионабором (строки) и линейкой Scale (столбцы). Справа в дополнительном столбце выводится наибольшее значение суммы цифр отдельного элемента в каждом числе строки. При щелчке мыши по форме строка с наибольшим таким значением выделяется зеленой рамкой.

В-40. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается радионабором (строки) и списком ComboBox (столбцы). Справа в дополнительном столбце выводится наименьшее значение произведения цифр отдельного элемента в каждом числе строки. При нажатии клавиши Enter строка с наименьшим таким значением выделяется синей рамкой.

В-41. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается линейкой Scale (строки) и списком ComboBox (столбцы). Внизу в дополнительной строке выводится наибольшая цифра в числах столбца. При нажатии пробела столбец с наименьшей такой цифрой выделяется синей рамкой.

В-42. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается списками ComboBox. Внизу в дополнительной строке выводится наименьшая цифра в элементах каждого столбца. По команде главного меню столбец с максимальной цифрой выделяется пунктирной красной рамкой.

В-43. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..8)). Конкретный размер задается радионаборами. В правом дополнительном столбце выводится количество символов в каждой строке (включая минус). По команде главного меню строка с наименьшим количеством выделяется зеленой рамкой.

В-44. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(9..11)). Конкретный размер задается списками ListBox. В правом дополнительном столбце выводится количество цифр только в положительных числах каждой строки. При нажатии клавиши Enter строка с наибольшим количеством выделяется зеленой рамкой.

В-45. Дана целочисленная матрица {Aij} i=1..n, j=1..m (nє(7..11), mє(8..10)). Конкретный размер задается командой главного меню (строки) и контекстного меню (столбцы). В нижней дополнительной строке выводится количество символов (включая минус) только в отрицательных числах каждого столбца. По команде главного меню черной рамкой выделяется столбец с наименьшим таким количеством.

В-46. Дана целочисленная матрица {Aij} i=1..n, j=1..m (nє(7..11), mє(9..12)). Конкретный размер задается командой главного меню (столбцы) и контекстного меню (строки). Если количество столбцов не меньше числа строк, то по команде контекстного меню черной рамкой выделяется строка, содержащаяы значение, наиболее близкое к нулю. В противном случае таким же образом выделяется столбец.

В-47. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..11)). Конкретный размер задается командой главного меню (строки) и контекстного меню (столбцы). В нижней дополнительной строке выводится количество символов (включая минусы) в каждом столбце. При нажатии средней клавиши мыши коричневой рамкой выделяется столбец с наименьшей суммой.

В-48. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается радионабором (строки) и комбобоксом (столбцы). В правом дополнительном столбце выводится элемент строки, наиболее близкий к нулю. По команде главного меню строка с наименьшим элементом выделяется зеленой рамкой.

В-49. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..10)). Конкретный размер задается линейкой Scale (строки) и радионабором (столюцы). В правом дополнительном столбце выводится количество нечетных цифр в каждой строке. По нажатию кнопки Button строка с наименьшим количеством выделяется желтой рамкой.

В-50. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..11)). Конкретный размер задается контекстным меню (строки) и линейкой Scale (столбцы). Внизу в дополнительной строке выводится число четных цифр в каждом столбце. При выходе мыши из пространства канвы столбец с наименьшим таким числом выделяется зеленой рамкой.

В-51. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..11)). Конкретный размер задается списком ListBox (строки) и линейкой Scale (столбцы). Внизу в дополнительной строке выводится число, наиболее близское к нулю, в каждом столбце. По команде контекстного меню столбец с наибольшим таким числом выделяется коричневой рамкой.

В-52. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..10)). Конкретный размер задается линейкой Scale (строки) и списком Listbox (столбцы). Внизу в дополнительной строке выводится количество цифр меньше 7 в числах столбца. При нажатии пробела столбец с наименьшим таким количеством выделяется синей рамкой.

В-53. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается линейкой Scale (строки) и списком ComboBox (столбцы). Внизу в дополнительной строке выводится наибольшая сумма цифр в числах столбца. При нажатии пробела столбец с наименьшей такой цифрой выделяется синей рамкой.

В-54. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(9..11)). Конкретный размер задается списками ListBox. В правом дополнительном столбце выводится сумма цифр только в положительных числах каждой строки. При нажатии клавиши Enter строка с наибольшим количеством выделяется зеленой рамкой.

В-55. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..11)). Конкретный размер задается командой главного меню (строки) и контекстного меню (столбцы). В нижней дополнительной строке выводится наибольшее произведение цифр в каждом столбце. При нажатии средней клавиши мыши коричневой рамкой выделяется столбец с наименьшим произведением.

В-56. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..10)). Конкретный размер задается линейкой Scale (строки) и радионабором (столюцы). В правом дополнительном столбце выводится произведение нечетных цифр в каждой строке. По нажатию кнопки Button строка с наименьшим произведением выделяется желтой рамкой.

В-57. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается командой главного меню (строки) и контекстного меню (столбцы). В нижней дополнительной строке выводится сумма нечетных цифр в каждом столбце. По команде главного меню красной рамкой выделяется столбец с наибольшей суммой.

В-58. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..9)). Конкретный размер задается радионаборами. В правом дополнительном столбце выводится число, наиболее близкое к нулю. По команде главного меню строка с наибольшим таким числом выделяется зеленой рамкой.

В-59. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(9..12)). Конкретный размер задается линейками Scale. В правом дополнительном столбце выводится количество цифр меньше 6 в каждой строке. По нажатию кнопки Button строка с наибольшим количеством выделяется желтой рамкой.

В-60. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(7..10)). Конкретный размер задается контекстным меню (строки) и радионабором (столбцы). Внизу в дополнительной строке выводится число цифр больше 5 в каждом столбце (минус не учитывается). При выходе мыши из пространства канвы столбец с наименьшим таким числом выделяется зеленой рамкой.

В-61. Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(8..10)). Конкретный размер задается списком ListBox (строки) и радионабором (столбцы). Внизу в дополнительной строке выводится произведение нечетных чисел в каждом столбце. По команде контекстного меню столбец с наименьшим произведением выделяется коричневой рамкой.
II. Создать Python-проект, реализующий данную задачу, и показать преподавателю.
Содержание отчета:

  1. Титульный лист установленной формы;

  2. Задание на выполнение лабораторной работы;

  3. Структура проекта;

  4. Блок-схема начальной установки, блок-схемы процедур;

  1. Листинг программы.


Контрольные вопросы

1) Как наиболее быстро очистить канву?

2) Можно ли создать рамку для выделения требуемого элемента матрицы из отдельных отрезков?

3) Какой модуль надо подключить к проекту для генерации случайных чисел?

4) Можно ли сделать матрицу «гребенчатой» (с разным количеством элементов в столбцах)?

5) Как задается диапазон генерируемых случайных чисел?

Лабораторная работа № 8
1   2   3   4   5   6   7   8   9   10


написать администратору сайта