====== Computer Lab 14, comprehensive exercises ======
* 1. Implement the following function:
def abs_2(x):
"""Return an absolute value of x-2, i.e., y=|x-2|.
:param x: int, float.
:return: int, float. The absolute value of x-2.
>>> abs_2(0)
2
"""
* 2. Implement the following function (pure function!). You can re-use ''abs_2()''.
def abs_2_list(lst):
"""Return a list of absolute values of x-2, where x's are elements of lst.
:param lst: list of ints/floats.
:return: list of ints/floats.
>>> abs_2_list([0, 2, 4])
[2, 0, 2]
"""
* 3. Consider a file with the following content:
//number_file.txt//
1,2,3,4
90,23,78,0,23,23
9,8,7,-5,-12,0,12,12,12
0,-8
3,3,3,3
Implement a function which outputs a list of sums of numbers from each line of the file. Return None if the file does not exist.
def sum_file(file_name):
"""Return a list of row sums.
:param file_name: Path to a text file.
:return: list of ints/floats.
>>> sum_file("number_file.txt")
[10, 237, 43, -8, 12]
"""
* 4. Implement four methods (%%__init__%%, %%__str__%%, %%__eq__%%, %%__add__%%) for the following class according to their tests.
import unittest
class ColorRGB:
"""Represents a color in the R (red), G (green), B (blue) format."""
class TestColorRGB(unittest.TestCase):
"""Test ColorRGB methods"""
def test_init(self):
"""Test that the initializer method __init__ takes 3 parameters"""
ColorRGB(255, 0, 255)
def test_str(self):
"""Test string conversion"""
self.assertEqual("ColorRGB(0,127,127)", str(ColorRGB(0, 127, 127)))
def test_eq(self):
"""Test deep equality for two ColorRGB instances"""
self.assertEqual(ColorRGB(0,30,255), ColorRGB(0,30,255))
def test_add(self):
"""Test the plus operator between two instances of the ColorRGB class"""
color1 = ColorRGB(30, 100, 255)
color2 = ColorRGB(0, 255, 30)
self.assertEqual(ColorRGB(30, 255, 255), color1 + color2)
self.assertEqual(ColorRGB(30, 100, 255), color1)
self.assertEqual(ColorRGB(0, 255, 30), color2)
if __name__ == "__main__":
# Execute all unit tests
unittest.main()
* 5. Implement the following function:
def random_integers(length, lower_bound, upper_bound):
"""Build a list of randomly chosen integers.
:param length: Length of the resulting list
:param lower_bound: Lower bound of each random integer (INCLUDED)
:param upper_bound: Upper bound of each random integer (INCLUDED)
:return: List of random integers
"""
* 6. Create the following lists using list comprehension:
# 1.
fruits = ["apple", "banana", "pear", "kiwi", "strawberry", "lime", "lemon", "orange"]
# only words of even number of letters, transform them to uppercase
# 2.
# List of |x-2| where x's are all integers in the closed interval [-10, 10].