Библиотеки Python

41 задачавместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

На испытательном стенде расположена сетка из \(n\times m\) датчиков давления. В каждой ячейке матрицы — показание датчика (целое число). Вычислите:

  • суммы по строкам \(r_i = \sum_{j} a_{ij}\) — суммарное давление по каждому ряду;

  • суммы по столбцам \(c_j = \sum_{i} a_{ij}\) — суммарное давление по каждому столбцу.

Формат ввода

Первая строка: \(n\) и \(m\) (\(1\le n,m\le 500\)). Следующие \(n\) строк по \(m\) целых чисел.

Формат вывода

Строка 1: \(n\) чисел — суммы по строкам. Строка 2: \(m\) чисел — суммы по столбцам.

Пример ввода:

3 3
5 12 8
3 7 15
10 6 4

Пример вывода:

25 25 20
18 25 27

Подсказка. Метод np.sum(axis=...): axis=1 — суммы по строкам, axis=0 — по столбцам.

✓ 10✗ 4600лёгкаяВойти и решать

При обработке данных физического эксперимента часто требуется привести показания датчика к единому масштабу. Выполните min-max нормализацию массива: \( x_{\mathrm{norm}} = \frac{x - \min(a)}{\max(a)-\min(a)}.\) После нормализации все значения лежат в отрезке \([0;\,1]\).

Формат ввода

Первая строка — целое число \(n\) (\(2\le n\le 10^5\)). Вторая строка — \(n\) вещественных чисел через пробел. Гарантируется, что \(\min(a)\ne\max(a)\).

Формат вывода

Одна строка — \(n\) вещественных чисел, каждое округлено до 4 знаков после запятой, через пробел.

Пример ввода:

5
10.0 20.0 30.0 40.0 50.0

Пример вывода:

0.0000 0.2500 0.5000 0.7500 1.0000

Подсказка. Функции np.min(), np.max() позволяют решить задачу в одну-две строки без циклов.

✓ 12✗ 27600лёгкаяВойти и решать

В физической лаборатории проведена серия измерений периода колебаний маятника (в секундах). Дан массив из \(n\) вещественных чисел. С помощью NumPy вычислите пять статистических характеристик.

Формат ввода

Первая строка — целое число \(n\) (\(1\le n\le 10^5\)). Вторая строка — \(n\) вещественных чисел через пробел.

Формат вывода

Пять строк вида метка: значение, значение округлено до 4 знаков после запятой:

  • min — минимум;

  • max — максимум;

  • mean — среднее: \(\bar{a}=\frac{1}{n}\sum_{i=1}^{n}a_i\);

  • median — медиана;

  • std — стандартное отклонение: \(\sigma=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(a_i-\bar{a})^2}\).

Пример ввода:

5
1.98 2.02 2.00 1.95 2.05

Пример вывода:

min: 1.9500
max: 2.0500
mean: 2.0000
median: 2.0000
std: 0.0341
✓ 11✗ 20600лёгкаяВойти и решать

Биолог провёл эксперимент: на \(n\) чашках Петри засеяны бактерии \(m\) различных штаммов. В каждой ячейке матрицы — количество выросших колоний. Вычислите:

  • суммы по строкам \(r_i = \displaystyle\sum_{j} a_{ij}\) — общее число колоний на каждой чашке;

  • суммы по столбцам \(c_j = \displaystyle\sum_{i} a_{ij}\) — общее число колоний каждого штамма.

Формат ввода

Первая строка: \(n\) и \(m\) (\(1\le n,m\le 500\)). Следующие \(n\) строк по \(m\) целых чисел.

Формат вывода

Строка 1: \(n\) чисел — суммы по строкам. Строка 2: \(m\) чисел — суммы по столбцам.

Пример ввода:

3 4
12 5 8 3
7 15 2 10
4 6 11 9

Пример вывода:

28 34 30
23 26 21 22

Подсказка. Метод np.sum(axis=...): axis=1 — суммы по строкам, axis=0 — по столбцам.

✓ 9✗ 11700средняяВойти и решать

В биохимической лаборатории измерена концентрация глюкозы (ммоль/л) в серии проб крови. Дан массив из \(n\) вещественных чисел. С помощью NumPy вычислите и выведите пять статистических характеристик.

Формат ввода

Первая строка — целое число \(n\) (\(1\le n\le 10^5\)). Вторая строка — \(n\) вещественных чисел через пробел.

Формат вывода

Пять строк вида метка: значение, значение округлено до 4 знаков после запятой:

  • min — минимальное значение;

  • max — максимальное значение;

  • mean — среднее арифметическое: \(\bar{a}=\dfrac{1}{n}\displaystyle\sum_{i=1}^{n}a_i\);

  • median — медиана;

  • std — стандартное отклонение: \(\sigma=\sqrt{\dfrac{1}{n}\displaystyle\sum_{i=1}^{n}(a_i-\bar{a})^2}\).

Пример ввода:

6
4.2 5.1 3.8 6.0 5.5 4.9

Пример вывода:

min: 3.8000
max: 6.0000
mean: 4.9167
median: 5.0000
std: 0.7426
✓ 13✗ 30600лёгкаяВойти и решать

Дана строка ДНК, состоящая из символов A, T, G, C. Длина строки кратна 3. Выполните следующие вычисления:

  1. Длина последовательности.

  2. GC-состав — процентная доля нуклеотидов \(G\) и \(C\): \[\mathrm{GC\%} = \frac{|G| + |C|}{n} \times 100,\] где \(|X|\) — количество символов \(X\), \(n\) — длина строки. Округлить до 2 знаков после запятой.

  3. Обратная комплементарная цепь (reverse complement). Комплементарность: \(A \leftrightarrow T\), \(G \leftrightarrow C\); затем цепь разворачивается.

  4. GC-богатые кодоны — количество кодонов (трёхбуквенных блоков), в которых два или три нуклеотида являются \(G\) или \(C\).

  5. Наиболее частый нуклеотид. При ничьей вывести тот, который идёт первым в алфавитном порядке (A < C < G < T).

Формат ввода. Одна строка — последовательность ДНК (только заглавные A, T, G, C; \(6 \le n \le 300\); \(n\) кратно 3).

Формат вывода. Ровно 5 строк в следующем порядке:

length: <целое>
gc: <вещественное, 2 знака>
rc: <строка>
gc_rich_codons: <целое>
most_frequent: <символ>

Пример ввода:

ATGGGCCCTATGAAA

Пример вывода:

length: 15
gc: 46.67
rc: TTTCATAGGGCCCAT
gc_rich_codons: 2
most_frequent: A

Разбор примера. Последовательность: ATG GGC CCT ATG AAA.

 

GC-состав: \((3+3+2+1)/15 = 9/15 \approx 46.67\%\). Кодоны GGC (\(3\,G/C\)) и CCT (\(2\,G/C\)) — итого 2 GC-богатых кодона. Наиболее частый нуклеотид: \(A=5, G=4, C=3, T=3\) — лидирует \(A\).

 

Условие. Дана таблица результатов тестирования. Найдите студентов, у которых средний балл по всем предметам строго выше общего среднего по всей таблице. Выведите имена в алфавитном порядке.

Формат ввода (CSV, stdin). Первая строка — заголовок: name,math,physics,informatics,english Далее строки с данными (\(2 \le n \le 1000\)).

Формат вывода. По одному имени на строке (лексикографический порядок).

Пример ввода:

name,math,physics,informatics,english
Alice,90,85,95,80
Bob,60,55,65,50
Charlie,75,80,70,85
Diana,40,45,35,50

Пример вывода:

Alice
Charlie

Общее среднее \(\approx 66.25\).

✓ 13✗ 45700средняяВойти и решать

Условие. Дана матрица \(A\) размера \(n \times m\). Вычислите суммы по строкам \(r_i = \sum_{j} a_{ij}\) и суммы по столбцам \(c_j = \sum_{i} a_{ij}\).

Формат ввода. Первая строка: \(n\) и \(m\) (\(1 \le n, m \le 500\)). Следующие \(n\) строк по \(m\) целых чисел.

Формат вывода. Строка 1: \(n\) чисел — суммы по строкам. Строка 2: \(m\) чисел — суммы по столбцам.

Пример ввода:

3 3
1 2 3
4 5 6
7 8 9

Пример вывода:

6 15 24
12 15 18
✓ 18✗ 8600лёгкаяВойти и решать

Условие. Дан массив из \(n\) чисел и размер окна \(k\). Вычислите скользящий максимум: \(M_i = \max(a_i, a_{i+1}, \ldots, a_{i+k-1}), \quad i = 0, 1, \ldots, n-k.\) 

Формат ввода. Первая строка: два целых числа \(n\) и \(k\) (\(1 \le k \le n \le 10^5\)). Вторая строка: \(n\) целых чисел (\(-10^9 \le a_i \le 10^9\)).

Формат вывода. Одна строка: \(n - k + 1\) целых чисел, разделённых пробелами.

Пример ввода:

7 3
2 1 5 3 6 4 8

Пример вывода:

5 5 6 6 8
✓ 17✗ 14700средняяВойти и решать

Условие. Дан массив из \(n\) вещественных чисел. Вычислите и выведите пять статистических характеристик.

Формат ввода. Первая строка содержит целое число \(n\) (\(1 \le n \le 10^5\)). Вторая строка содержит \(n\) вещественных чисел, разделённых пробелами.

Формат вывода. Пять строк, каждая в виде <метка>: <значение>, значение округлено до 4 знаков после запятой:\(\bar{a} = \frac{1}{n}\sum_{i=1}^{n} a_i, \qquad \sigma(a) = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(a_i - \bar{a})^2}\)  

Пример ввода:

5
3.0 1.0 4.0 1.0 5.0

Пример вывода:

min: 1.0000
max: 5.0000
mean: 2.8000
median: 3.0000
std: 1.6000
✓ 19✗ 18600лёгкаяВойти и решать

АЛГОРИТМ РАСЧЕТА R²

Шаг 1: Вычисляем среднее значение Y

y_mean = (y₁ + y₂ + ... + yₙ) / n

Шаг 2: Считаем общую сумму квадратов (TSS) Total Sum of Squares — насколько данные разбросаны вокруг среднего

TSS = Σ(y_i - y_mean)²

Шаг 3: Считаем сумму квадратов ошибок (RSS) Residual Sum of Squares — насколько наши предсказания ошибаются

RSS = Σ(y_i - y_pred_i)²

Шаг 4: Вычисляем R²

R² = 1 - (RSS / TSS)
 


Задача

Напишите программу, которая оценивает качество модели предсказания оценок студентов.

Формат входных данных
Программа получает на вход две строки: в первой строке через пробел записаны целые числа - реальные оценки студентов, во второй строке записаны вещественные числа - оценки, полученные в результате предсказания с использованием модели. Количество чисел в первой и второй строке равно 10.

Формат выходных данных
Выведите одно число - коэффициент R2 с точностью до 2-х знаков после запятой
 

Обработка пропусков

df.dropna() - удаляет строки с пропусками
df.fillna(value, inplace=True) - заполняет пропуски значением value
df.fillna(df.mean(), inplace=True) - заполняет средним значением

Параметр inplace:
inplace=False (по умолчанию) - создает копию с изменениями
inplace=True- изменяет исходный DataFrame напрямую

Метод fillna() с словарем позволяет заполнить пропуски в разных столбцах различными значениями за одну операцию. Синтаксис:
df.fillna({'column1': value1, 'column2': value2, ...})
Пример
 
df = ...
# Заполнение разными значениями
fill_dict = {
    'age': df['age'].mean(),      # Средним значением
    'salary': df['salary'].median(), # Медианой
    'city': 'Unknown'             # Константой
}

df_filled = df.fillna(fill_dict)
print(df_filled)
 

Задание

Проанализируйте датасет супергероев, считав его из прикрепленного файла
Напишите программу, который ищет и обрабатывает пропуски. 

  1. Заполните пропуски в power и intelligence средними значениями
  2. Заполните пропуски в costume_cost медианным значением 
  3. Заполните пропуски в first_appearance значением 1950 
  4. Для текстовых полей (name, alias, universe) заполните пропуски строкой Unknown
Выведите обработанный датасет на экран, используя print(df)

Промахом считается выстрел с расстоянием больше 10.0. Определите, у какого игрока был самый худший одиночный выстрел (максимальное значение в массиве)? А сколько всего фатальных промахов совершила вся команда?

Тренеры заметили, что некоторые игроки сильно «разогреваются» к концу сессии. Проверьте гипотезу: сравните среднюю точность каждого игрока по первым пяти выстрелам и по последним пяти. У кого разница в пользу последних выстрелов наибольшая? (Значит, он "разыгрывается").
Точность — это хорошо, но стабильность — лучше! Найдите игрока с самой маленькой дисперсией или стандартным отклонением результатов. Это значит, что он стабильно стреляет примерно с одинаковой точностью.

Напишите программу на Python, которая:

  1. Считывает математическое выражение из строки.

  2. Преобразует строку в символьное выражение с помощью SymPy.

  3. Вычисляет численное значение выражения для заданных значений переменных.

  4. Выводит результат.

Напишите программу, которая запрашивает математическое выражение в виде строки и два параметра целого типа, использует библиотеку SymPy для его парсинга и вычисления, а затем выводит результат.
Программа должна обрабатывать простые арифметические операции, такие как сложение, вычитание, умножение и деление, а также возведение в степень.
✓ 18✗ 62600лёгкаяВойти и решать
Напишите программу, которая анализирует последовательность ДНК.
Формат входных данных
Единственная строка содержит последовательность ДНК.

Формат выходных данных
Запишите четыре строки, являющиеся ответами на задания задачи:
1) Длина последовательности.
2) Комплементарную цепь.
3) Обратная комплементарная цепь
4) Транскрипцию последовательности (преобразование ДНК в РНК).
✓ 34✗ 52400лёгкаяВойти и решать
Поделиться
Класснуть