Разработка web-приложения. ЛР по ВТП для ВТ (Питон). Методические указания к лабораторным работам для студентов, обучающихся в бакалавриате по направлениям
Скачать 2.07 Mb.
|
Обработка матриц Цель работы: изучение стандартных средств 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) Можно ли сделать матрицу «гребенчатой» (с разным количеством элементов в столбцах)? 5) Как задается диапазон генерируемых случайных чисел? Лабораторная работа № 8 |