Написать с использованием оператора match / case функцию rnd() от двух параметров (a и b=None), которая возвращает некоторое случайное значение в зависимости от того, какого типа и в каком количестве переданы ей параметры:
целое → случайное целое в диапазоне [0…a]
два целых → случайное целое в диапазоне [a…b]
вещественное и целое/вещественное → случайное вещественное в диапазоне [a…b[
индексируемая или итерируемая последовательность → случайный элемент a
индексируемая или итерируемая последовательность и целое → список из b случайных элементов a
строка и целое → случайная подстрока a длиной b
строка → случайное слово из a.split()
строка и строка → случайная строка из a.split(b)
В решении важно использовать только необходимые функции random, иначе тесты не пройдут.
1 import random
2 random.seed(123)
3 print(*(rnd(3, 5) for i in range(11)))
4 prnit(rnd(5))
5 print(*(round(rnd(3., 5), 4) for i in range(4)))
6 print(*(rnd("Substring", 4) for i in range(4)))
7 print(*(rnd("We won oewn wow") for i in range(5)))
8 print(*(rnd("We won oewn wow", "wo") for i in range(4)))
9 print(*(rnd(range(10)) for i in range(12)))
10 print(*(rnd({1, 3, 5, 7}) for i in range(12)))
11 print(*(rnd(range(10), 3) for i in range(4)))
12 print(*(rnd(enumerate("qwe"), 1) for i in range(5)))
Варианты в условии перечислены в неправильном порядке; например, строка — это последовательность, но в rnd() обрабатывается по-другому
Индексируемая или последовательность — это collections.abc.Sequence, а итерируемая последовательность — collections.abc.Iterable
3 4 3 4 4 3 3 4 5 5 4 2 4.7042 3.3193 3.6744 3.6676 ubst ubst Subs stri We wow We We oewn w n oewn We We 1 2 2 0 4 6 9 7 4 7 0 4 5 7 3 5 1 7 7 7 7 5 1 3 [7, 0, 4] [2, 3, 5] [8, 7, 3] [7, 0, 5] [(2, 'e')] [(1, 'w')] [(2, 'e')] [(2, 'e')] [(1, 'w')]
(нажмите «Комментарии» в шапке страницы, чтобы прочитать спойлер) Функции, которые использовались в эталонном решении:
randint()
randint()
random()
choice()
choices()
randint()
choice()
choice()