1.3. Entry Test¶
1.3.1. Assignments¶
"""
* Assignment: About EntryTest Warmup
* Complexity: easy
* Lines of code: 1 lines
* Time: 2 min
English:
1. Define variable `result` with value 1
2. Run doctests - all must succeed
Polish:
1. Zdefiniuj zmienną `result` z wartością 1
2. Uruchom doctesty - wszystkie muszą się powieść
Tests:
>>> import sys; sys.tracebacklimit = 0
>>> from pprint import pprint
>>> assert result is not Ellipsis, \
'Assign result to variable: `result`'
>>> assert type(result) is int, \
'Variable `result` has invalid type, should be int'
>>> pprint(result)
1
"""
# Define variable `result` with value 1
# type: int
result = ...
"""
* Assignment: About EntryTest ToListDict
* Complexity: easy
* Lines of code: 2 lines
* Time: 5 min
English:
1. Define `result: list[dict]`:
2. Convert `DATA` from `list[tuple]` to `list[dict]`
a. key - name from the header
b. value - numerical value or species name
3. Run doctests - all must succeed
Polish:
1. Zdefiniuj `result: list[dict]`:
2. Przekonwertuj `DATA` z `list[tuple]` do `list[dict]`
a. klucz - nazwa z nagłówka
b. wartość - wartość numeryczna lub nazwa gatunku
3. Uruchom doctesty - wszystkie muszą się powieść
Tests:
>>> import sys; sys.tracebacklimit = 0
>>> from pprint import pprint
>>> assert result is not Ellipsis, \
'Assign result to variable: `result`'
>>> result = list(result)
>>> assert type(result) is list, \
'Result must be a list'
>>> assert len(result) > 0, \
'Result cannot be empty'
>>> assert all(type(element) is dict for element in result), \
'All elements in result must be a dict'
>>> pprint(result)
[{'petal_length': 5.1,
'petal_width': 1.9,
'sepal_length': 5.8,
'sepal_width': 2.7,
'species': 'virginica'},
{'petal_length': 1.4,
'petal_width': 0.2,
'sepal_length': 5.1,
'sepal_width': 3.5,
'species': 'setosa'},
{'petal_length': 4.1,
'petal_width': 1.3,
'sepal_length': 5.7,
'sepal_width': 2.8,
'species': 'versicolor'},
{'petal_length': 5.6,
'petal_width': 1.8,
'sepal_length': 6.3,
'sepal_width': 2.9,
'species': 'virginica'},
{'petal_length': 4.5,
'petal_width': 1.5,
'sepal_length': 6.4,
'sepal_width': 3.2,
'species': 'versicolor'},
{'petal_length': 1.3,
'petal_width': 0.2,
'sepal_length': 4.7,
'sepal_width': 3.2,
'species': 'setosa'}]
"""
DATA = [
('sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species'),
(5.8, 2.7, 5.1, 1.9, 'virginica'),
(5.1, 3.5, 1.4, 0.2, 'setosa'),
(5.7, 2.8, 4.1, 1.3, 'versicolor'),
(6.3, 2.9, 5.6, 1.8, 'virginica'),
(6.4, 3.2, 4.5, 1.5, 'versicolor'),
(4.7, 3.2, 1.3, 0.2, 'setosa'),
]
# Convert DATA from list[tuple] to list[dict]
# type: list[dict[str,float|str]]
result = ...
"""
* Assignment: About EntryTest ToListTuple
* Complexity: easy
* Lines of code: 5 lines
* Time: 5 min
English:
1. Load `DATA` from JSON format
2. Convert data to `result: list[tuple]`
3. Add header as a first line
4. Run doctests - all must succeed
Polish:
1. Wczytaj `DATA` z formatu JSON
2. Przekonwertuj dane do `result: list[tuple]`
3. Dodaj nagłówek jako pierwszą linię
4. Uruchom doctesty - wszystkie muszą się powieść
Tests:
>>> import sys; sys.tracebacklimit = 0
>>> from pprint import pprint
>>> assert result is not Ellipsis, \
'Assign result to variable: `result`'
>>> result = list(result)
>>> assert type(result) is list, \
'Variable `result` has invalid type, should be list'
>>> assert len(result) > 0, \
'Variable `result` should not be empty'
>>> assert all(type(row) is tuple for row in result), \
'Variable `result` should be a list[tuple]'
>>> pprint(result)
[('sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species'),
(5.8, 2.7, 5.1, 1.9, 'virginica'),
(5.1, 3.5, 1.4, 0.2, 'setosa'),
(5.7, 2.8, 4.1, 1.3, 'versicolor'),
(6.3, 2.9, 5.6, 1.8, 'virginica'),
(6.4, 3.2, 4.5, 1.5, 'versicolor'),
(4.7, 3.2, 1.3, 0.2, 'setosa')]
"""
DATA = [
{'sepal_length': 5.8, 'sepal_width': 2.7, 'petal_length': 5.1, 'petal_width': 1.9, 'species': 'virginica'},
{'sepal_length': 5.1, 'sepal_width': 3.5, 'petal_length': 1.4, 'petal_width': 0.2, 'species': 'setosa'},
{'sepal_length': 5.7, 'sepal_width': 2.8, 'petal_length': 4.1, 'petal_width': 1.3, 'species': 'versicolor'},
{'sepal_length': 6.3, 'sepal_width': 2.9, 'petal_length': 5.6, 'petal_width': 1.8, 'species': 'virginica'},
{'sepal_length': 6.4, 'sepal_width': 3.2, 'petal_length': 4.5, 'petal_width': 1.5, 'species': 'versicolor'},
{'sepal_length': 4.7, 'sepal_width': 3.2, 'petal_length': 1.3, 'petal_width': 0.2, 'species': 'setosa'},
]
# Convert DATA from list[dict] to list[tuple]
# type: header = tuple[str,...]
# type: row = tuple[float,float,float,float,str]
# type: list[tuple[header|row,...]]
result = ...
"""
* Assignment: About EntryTest Endswith
* Complexity: easy
* Lines of code: 5 lines
* Time: 5 min
English:
1. Define `result: list[str]`
2. Collect in `result` all email addresses from `DATA` -> `crew`
with domain names mentioned in `DOMAINS`
3. Run doctests - all must succeed
Polish:
1. Zdefiniuj `result: list[str]`
2. Zbierz w `result` wszystkie adresy email z `DATA` -> `crew`
z nazwami domenowymi wymienionymi w `DOMAINS`
3. Uruchom doctesty - wszystkie muszą się powieść
Tests:
>>> import sys; sys.tracebacklimit = 0
>>> from pprint import pprint
>>> assert result is not Ellipsis, \
'Assign result to variable: `result`'
>>> assert type(result) is list, \
'Result must be a list'
>>> assert len(result) > 0, \
'Result cannot be empty'
>>> assert all(type(element) is str for element in result), \
'All elements in result must be a str'
>>> pprint(result)
['mlewis@nasa.gov',
'rmartinez@nasa.gov',
'avogel@esa.int',
'cbeck@nasa.gov',
'bjohanssen@nasa.gov',
'mwatney@nasa.gov']
"""
DATA = {
'mission': 'Ares 3',
'launch': '2035-06-29',
'landing': '2035-11-07',
'destination': 'Mars',
'location': 'Acidalia Planitia',
'crew': [{'name': 'Melissa Lewis', 'email': 'mlewis@nasa.gov'},
{'name': 'Rick Martinez', 'email': 'rmartinez@nasa.gov'},
{'name': 'Alex Vogel', 'email': 'avogel@esa.int'},
{'name': 'Pan Twardowski', 'email': 'ptwardowski@polsa.gov.pl'},
{'name': 'Chris Beck', 'email': 'cbeck@nasa.gov'},
{'name': 'Beth Johanssen', 'email': 'bjohanssen@nasa.gov'},
{'name': 'Mark Watney', 'email': 'mwatney@nasa.gov'},
{'name': 'Ivan Ivanovich', 'email': 'iivanovich@roscosmos.ru'}]}
DOMAINS = ('esa.int', 'nasa.gov')
# Email addresses with top-level domain in DOMAINS
# type: list[str]
result = ...