Задача курса

pandas loc: обновление цен и пересчёт стоимости

Курс «NumPy и pandas: практический тренажёр» · урок «Создание и изменение столбцов: векторные выражения, loc и выравнивание по индексу»

Условие

Склад: пересчёт стоимости после обновления цен через loc

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

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

  1. Читает из stdin целое число n — количество товаров.
  2. Читает следующие n строк; каждая содержит три токена через пробел: название (строка без пробелов), цена (целое число), количество (целое число). Пример строки: Монитор 15000 4.
  3. Создаёт pd.DataFrame с именем df из словаря списков с ключами 'name', 'price', 'qty'.
  4. Создаёт новый столбец 'stock_value' как векторное выражение df['price'] * df['qty'].
  5. Читает из stdin целое число k — количество обновлений цены.
  6. Читает следующие k строк; каждая содержит два токена: название (строка) и new_price (целое число). Для каждой такой пары обновляет цену через df.loc[df['name'] == название, 'price'] = new_price.
  7. После всех обновлений пересчитывает столбец 'stock_value' заново: df['stock_value'] = df['price'] * df['qty'].
  8. Выводит в stdout ровно n строк в формате <name> <price> <stock_value> — три токена через пробел.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

n
name_0 price_0 qty_0
...
name_{n-1} price_{n-1} qty_{n-1}
k
name_i new_price_i
...
  • Первая строка: целое n (2 ≤ n ≤ 8).
  • Следующие n строк: три токена — строка, целое, целое.
  • Затем целое k (0 ≤ k ≤ n).
  • Следующие k строк: строка и целое — имя товара (гарантированно есть в таблице) и новая цена.

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

n строк вида <name> <price> <stock_value>, где price и stock_value — целые числа.

Примеры

Пример 1

Ввод
4
Монитор 15000 4
Клавиатура 2000 10
Мышь 800 15
Наушники 3500 6
2
Монитор 13000
Мышь 950
Ожидаемый результат
Монитор 13000 52000
Клавиатура 2000 20000
Мышь 950 14250
Наушники 3500 21000

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется