Newer
Older
Fill in one-line expressions (no own functions) to initialize attributes
self.b .. self.k with specified values.
Use Python built-in functions, list expressions and list comprehension,
but NOT own functions.
Complete tasks one after another. Once you are done with one task,
uncomment test cases in test_expressions.py. Remove comments for
# Test_case_b = Test_case
# Test_case_c = Test_case
# Test_case_d = Test_case
# ...
Run tests in IDE and in a terminal:
default_numbers=[4, 12, 3, 8, 17, 12, 1, 8, 7]
def __init__(self, _numbers=default_numbers):
"""
Constructor to initialize member variables.
"""
self.numbers = _numbers
# a) initialize with number of numbers: 9
self.a = len(self.numbers) # <-- given solution, insert one-line expressions below
# b) initialize with first three numbers: [4, 12, 3]
self.b = [] # <-- write expression here
# c) initialize with last three numbers: [1, 8, 7]
self.c = []
# d) initialize with last three numbers reverse: [7, 8, 1]
self.d = []
# e) initialize with odd numbers: [3, 17, 1, 7]
self.e = []
# f) initialize with number of odd numbers: 4
self.f = 0
# g) initialize with sum_ of odd numbers: 28
self.g = 0
# h) duplicate numbers removed: [4, 12, 3, 8, 17, 1, 7]
self.h = []
# i) number of duplicate numbers: 2
self.i = 0
# j) ascending list of squared numbers with no duplicates: [1, 9, 16, 49, 64, 144, 289]
self.j = []
# k) initialize with "ODD_LIST", "EVEN_LIST" or "EMPTY_LIST" depending on numbers length
self.k = "NEITHER"
# attempt to load solution module (ignore)
try:
_from, _import = 'expressions_sol', 'Stream'
mod = __import__(_from, fromlist=[_import])
mod.set_solution(self) # invoke set_solution() to replace values with solutions
#
except ImportError:
pass
def print_results(self):
print(f'\nnumbers: {self.numbers}\n#')
fmt = {
# key: (value, output string)
'a': (self.a, 'number of numbers'),
'b': (self.b, 'first three numbers'),
'c': (self.c, 'last three numbers'),
'd': (self.d, 'last three numbers reverse'),
'e': (self.e, 'odd numbers'),
'f': (self.f, 'number of odd numbers'),
'g': (self.g, 'sum of odd numbers'),
'h': (self.h, 'duplicate numbers removed'),
'i': (self.i, 'number of duplicate numbers'),
'j': (self.j, 'ascending, de-dup (n^2) numbers'),
'k': (self.k, 'length'),
}
# format output, e.g.: "b) first three numbers: [1, 4, 6]"
for k in sorted(fmt.keys()):
print(f'{k}) {fmt[k][1]}: {fmt[k][0]}')
if __name__ == '__main__':
'''
Driver code that runs when this file is directly executed.
n1 = Expressions() # use default list
# 2nd object with different list
n2 = Expressions([1, 4, 6, 67, 6, 8, 23, 8, 34, 49, 67,
6, 8, 23, 37, 67, 6, 34, 19, 67, 6, 8])
#
n1.print_results()
# n2.print_results() # try also other list