Friday, May 31, 2024

📑 Pairs in Strings

📑 Task

1) What does this program calculate?
2) Suggest a program for easier calculation of this indicator

📑 Answer

1) This program calculates the maximum number of pairs of the same letters
in a given string, taking into account all possible shifts of the string.
2)

Monday, May 27, 2024

📑 Coroutine Math Functions

📑 Task

1) What is the name of the special type of functions
(the second one in the given code fragment)?
Why do we add "None" to the beginning of the list of angle measurements?
2) Modify this function so that it collects values and does not print them out

📑 Answer

1) This is a coroutine function
We must initialize the coroutine and prepare it to accept values
so we are starting with None
2)

Sunday, May 26, 2024

📑 List Methods and Generators

📑 Task

1) What values do the generators calculate in this case?
What will the program print?
2) Give a similar example using generators and list methods,
where it is impossible to use lists with completely different values

📑 Answer

1) The outputs: [21, 'a', 21] and [2, 1, 1, 0, 0, 1, 2, 2, 1]
Both generators calculate their values in the first list
based on information from the second one
2)

Saturday, May 25, 2024

📑 Applying Class Methods

📑 Task

1) What value will "population" be after running the code?
2) Modify the class code so that its examples can transfer any indicators
to each other (energy, objects collected during the task, etc.)

📑 Answer

1) It will be zero again
2)

Thursday, May 23, 2024

📑 Table Formatting

📑 Task

1) Will the code throw an error due to
different lengths of nested components?
2) Suggest a code snippet that will turn nested lists
into tabs with html markup

📑 Answer

1) No, this function provides for filling missing values
with spaces when printing
2)

Tuesday, May 21, 2024

📑 Object Similarity

📑 Task

1) Can you explain difference between the follow objects:
x_same, x_copy, x_equal?
2) Write a function that compares two lists based on the following parameters:
a) is the list length the same,
b) do all unique elements match,
c) whether the composition of the list as a whole is the same,
d) are the elements arranged in the same order,
e) whether they have the same address in memory.
Apply it to the indicated objects

📑 Answer

1) a) x_same and x contain from the same elements,
but they are different and independent objects
b) x_equal refers to the same list object as x,
so they share the same memory address
c) x_copy refers to a new list object created by making
a shallow copy of x, so x_copy is a different object
with the connection to the original list because of
the nested mutable component []
2)

Sunday, May 19, 2024

📑 Count in Two

📑 Task

1) Will the functions count1() and count2() count events independently of each other?
2) How can we define other Python objects that allow us
to count events in programs using the same rule?
For example, classes or generators

📑 Answer

1) Yes, the functions will count independently of each other
depending on the number of calls
2)

Saturday, May 18, 2024

📑 Max Product of Three

📑 Task

1) Find a mistake in the process of recursion the function
for calculating the maximum product of three numbers in the list
2) Suggest a possible decision to build a recursive function

📑 Answer

1) Incorrect recursion logic: if the list becomes longer by one element,
then all the indices of the elements that give the maximum product
could be changed, not only one index
2)

Sunday, May 12, 2024

📑 Referring to the Same Object

📑 Task

1) Will the result of printing the values for the functions f1 and f2
be the same in all cases?
2) Print out the values of the function f2 at x = 1, 2, 3 so
that the result will be the same for all x

📑 Answer

1) When printed in a loop, the functions' values will be equal
For f1 the default list-argument changes
(it was set when the function was defined)
For f2 the same list-variable changes
(it was set as a global variable)
When printed by the generator, the functions' values become different
f1 continues to expand the default list-argument
f2 begins to expand the empty list-variable again
2)

Saturday, May 11, 2024

📑 Neuron Activations

📑 Task

1) Can you describe the goals of creating this type of objects?
2) Try to modify this class so that it becomes more
multifunctional and has several activation methods

📑 Answer

1) This Neuron class aims to provide a foundation for understanding how
individual neurons process input data and produce output in a neural network
2)

Friday, May 10, 2024

📑 Different Behavior of Functions

📑 Task

1) How will using this decorator affect the function?
2) Can you build your own decorator function that will affect the behavior
of user-defined or built-in functions depending on the arguments?

📑 Answer

1) This gives the function different behavior depending on the type of its argument
2)

📑 Countdown Timers

📑 Task

1) Explain the sequence of actions of this program
2) Can you suggest an alternative code for timing only in Python?

📑 Answer

1) This code renders the countdown timer in the output area
of the Jupyter notebook or IPython environment
It based on Javascript and HTML components, stored in Python strings
2)
import time
from datetime import datetime
def timer(maxiter=100):
    for i in range(maxiter):
        time.sleep(1)
        print(f"🕒 {(59 - datetime.now().second):0>2}", 
              flush=True, end='')
        print("\r", flush=True, end='')
timer()

📑 Memorization Decorators

📑 Task

1) What is the decorator used for in the second function definition?
2) Can you write your own decorator for the same goal?
import functools, time
def fibonacci1(n):
    if n < 2: return n
    return fibonacci1(n - 1) + fibonacci1(n - 2)
# a least-recently-used (LRU) cache eviction policy
@functools.lru_cache(maxsize=None)
def fibonacci2(n):
    if n < 2: return n
    return fibonacci2(n - 1) + fibonacci2(n - 2)
code_str = lambda f, n: f"""
start = time.time(); {f(n)}; stop = time.time() 
print(f'{f}: {{stop - start: e}}')"""
for f in [fibonacci1, fibonacci2]:
    exec(code_str(f, 30))

📑 Answer

1) The memoization provided by `functools.lru_cache` prevents redundant calculations
by storing previously computed Fibonacci numbers and
retrieving them from the cache when needed
2) The decorator with custom cache eviction policies and
different data structures for the cache
def cache(func):
    @functools.wraps(func)
    def wrapper_cache(*args, **kwargs):
        cache_key = args + tuple(kwargs.items())
        if cache_key not in wrapper_cache.cache:
            wrapper_cache.cache[cache_key] = func(*args, **kwargs)
        return wrapper_cache.cache[cache_key]
    wrapper_cache.cache = dict()
    return wrapper_cache
@cache
def fibonacci3(n):
    if n < 2: return n
    return fibonacci3(n - 1) + fibonacci3(n - 2)
for f in [fibonacci1, fibonacci2, fibonacci3]:
    exec(code_str(f, 30))

Thursday, May 9, 2024

📑 Sets and Elements

📑 Task

1) What will be the result of running the program?
2) Suggest as many other ways as possible to add and remove this element from the set
How else can a mini- program check if there is an element in a given set?

📑 Answer

1) Outputs: {0, '♗', '♙', 1, 2, 3, '♕', '♔', 4, '♖', '♘'} ♘ and False
2)


Wednesday, May 8, 2024

📑 Selecting the Maximum Values

📑 Task

1) Which built-in function will select from the list [a, b]
the same object as all expressions?
2) Can you continue this list and add some expressions with the same result?

📑 Answer

1) max(a, b)
2)

📑 Read-Write Attributes

📑 Task

1) The 'id' attribute is directly accessible and modifiable by the user
How this type of attributes is usually named?
2) Can you create another class that restricts access to
the id attribute for reading, making it write-only?
It will be great if you do this with additional hashing functionality.

📑 Answer

1) They are named 'read-write attributes' very often
2)

Tuesday, May 7, 2024

📑 Managed Attributes

📑 Task

1) Describe the object stored in variable c1
2) Create class attributes 'area' and 'circumference' and
convert them into properties or managed attributes

📑 Answer

1) The object stored in the variable c1 is an instance of the Circle class
It represents a circle with a radius derived
from the given diameter and a specified unit of measurement
2) Now the Circle class provides the ability to easily calculate
area and circumference for its instances

📑 Decorated Built-in Functions

📑 Task

1) What effect for the built-in function will we see after running this code?
2) Suggest a similar technique for rounding the results of calculations
of built-in mathematical functions, and also
provide a way to revert to the original built-in function

📑 Answer

1) The decorated print function now prints each argument
with a space at the end and flushes the output,
pausing for 1 second after printing each argument
2)

Sunday, May 5, 2024

📑 Ternary Operators

📑 Task

1) What actions will this program perform?
2) Can you write a code snippets with ternary operators inside math calculations?

📑 Answer

1) The program generates a number (-1, 0 or 1) using a special Python module
and uses the ternary operator to call one of three anonymous functions
depending on the pseudo-random selection of the number
2) Ternary operators have lower precedence than arithmetic operators

Thursday, May 2, 2024

📑 Reversed Linked Lists

📑 Task

1) How will the second row printed by the program differ from the 1st and 3rd?
2) Can you write the reverse() method in any other way?

📑 Answer

1) In the 2nd line the linked list is printed in reverse order
This is additionally indicated by a symbol between the list elements
2)

Wednesday, May 1, 2024

📑 Cycle Lists

📑 Task

1) What will the program print in the last line?
2) Modify the program so that the same result is produced by a generator function
with arguments: the original list, the starting character, and the length of the resulting list
Suggest variants of code for returning from the resulting list to the original list

📑 Answer

1) ['♗', '♘', '♙', '♔', '♕', '♖', '♗', '♘', '♙', '♔']
2)

📑 Lists with Periodic Patterns

📑 Task

1) Will the program print three separate lists of elements of different types
(letters, numbers, fruit symbols) at least in one of output rows?
2) How can you fix the third and fourth code lines
to get three separate lists of elements of different kinds?

📑 Answer

1) No
In the first case, lists of the required type will be inside tuples
In the second case, tuples of elements of different types will be formed
2)

📑 Boolean Functions for Non-Boolean Objects

📑 Task

1) What will the program print?
2) Explain the result of summation using a code snippet

📑 Answer

1) [] (Ellipsis,) {} {None}, 2, 3, 1
2) sum() calculates the sum of the boolean values (True = 1, False = 0)