Search
In this practice, you will create a single Python file main.py. In this file you will write (or complete) the following functions, each of which solves a particular problem:
main.py
task01(items)
task02(items)
task03(listA, listB)
task04(items)
task05(matrix)
task06(matrix)
Both filename and names of the functions have to be exactly the same as described.
When submitting your solution:
You can obtain maximum of 2 points.
In starter code which is provided bellow each function contains docstring with short desription. Docstrings also contain examples of usage. Those examples can be used for testing your functions using doctest module. To run those tests you can simply run the main module as main script.
main
Below is a basic code structure you can use. Copy-paste the following code and complete each function (task01, task02, task03, …) according to description in the function docstring. Then submit your final main.py.
task01
task02
task03
import copy def task01(items): """Counts the number of elements strictly smaller than the first element :param items: list of integers :return: integer, number of elements strictly smaller than the first element Examples: >>> task01([1, 2, 3]) 0 >>> task01([3, 2, 1]) 2 """ pass def task02(items): """Checks if number of leading values 0 in list is equal to the number of trailing values 0. :param items: list of integers :return: boolean value Examples: >>> task02([0, 0, 0, 2, 3, 0, 0, 4, 5, 6, 0, 0]) False >>> task02([0, 10, 11, 12, 22, 0]) True >>> task02([0, 0, 0, 0, 0]) True """ pass def task03(listA, listB): """Creates copy of listB and modifies it using following rule: All occurrences of maximum in listB are replaced by minimum of value of listA. Original listB remains unmodified. :param listA: list of integers :param listB: list of integers :return: list of integers, modified copy of listB Example: >>> listA = [2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5] >>> listB = [55, 20, 33, 11, 55, 33, 11, 33, 44, 44, 55] >>> task03(listA, listB) [2, 20, 33, 11, 2, 33, 11, 33, 44, 44, 2] """ pass def task04(items): """finds minimum of all values which appear in list exactly twice If no value appears twice in the list return None. :param items: list of integers :return: integer or None, minimum of all values which appear in list exactly twice Examples: >>> task04([11, 20, 33, 11, 20, 33, 11, 33, 44, 44, 55]) 20 >>> task04([2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5]) is None True """ pass def task05(matrix): """ Shrinks the size of the matrix by 2: Removes the first and the last row of the matrix and the first and the last column of the matrix. Returns modified copy of original matrix. Original matrix remains unchanged. :param matrix: matrix containing integer values :return: copy of original matrix shranked by 2 Example: >>> inp_matrix = [ ... [1, 1, 1, 1, 1, 1], ... [1, 2, 3, 2, 3, 1], ... [1, 3, 2, 3, 2, 1], ... [1, 2, 3, 2, 3, 1], ... [1, 3, 2, 3, 2, 1], ... [1, 1, 1, 1, 1, 1] ... ] >>> out_matrix = [ ... [2, 3, 2, 3], ... [3, 2, 3, 2], ... [2, 3, 2, 3], ... [3, 2, 3, 2] ... ] >>> task05(inp_matrix) == out_matrix True """ pass def task06(matrix): """ Exchange the contents of the diagonals of the matrix. The items on the diagonals will stay in the same row, but in each row, the item X in the main diagonal will be exchanged with the item Y in the secondary diagonal (antidiagonal) in the same row. :param matrix: matrix containing integer values :return: modified copy of original matrix Example: >>> inp_matrix = [ ... [1, 0, 0, 0, 2], ... [0, 1, 0, 2, 0], ... [0, 0, 3, 0, 0], ... [0, 2, 0, 1, 0], ... [2, 0, 0, 0, 1] ... ] >>> out_matrix = [ ... [2, 0, 0, 0, 1], ... [0, 2, 0, 1, 0], ... [0, 0, 3, 0, 0], ... [0, 1, 0, 2, 0], ... [1, 0, 0, 0, 2] ... ] >>> task06(inp_matrix) == out_matrix True """ pass if __name__ == "__main__": import doctest doctest.testmod(verbose=True)