Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей python

Александр Бренди Ученик (97), на голосовании 5 месяцев назад
Петя очень тщательно ведет учет своих покупок. В конце месяца ему стало интересно, на какую категорию товаров он потратил меньше всего денег. Данные о расходах, которые записывает Петя, содержат категорию товара, полную стоимость товара и процент скидки на этот товар. Напишите программу, которая поможет Пете.



Входные данные:

Вводится натуральное число n – количество строк с данными о покупках. Далее вводятся n строк, в каждой из которых указаны категория покупки, ее цена (без учета скидки) и скидка в процентах. Гарантируется, что в каждой строке сначала идет название категории (строка из латинских букв), потом пробел, потом цена (натуральное число), потом пробел и скидка (натуральное число).



Выходные данные:

Вывести одну число – название категории товара, на которую Петя потратил меньше всего денег с учетом скидок.



Так, например, если программе на вход будут поданы следующие данные:

5
milk 100 10
clothes 1100 60
other 3000 55
meat 300 40
milk 120 20,

то она должна вывести «meat».
Голосование за лучший ответ
Татьяна Просветленный (36384) 6 месяцев назад
 def find_min_expense_category(n, purchases): 
from collections import defaultdict

category_expenses = defaultdict(float)

for purchase in purchases:
parts = purchase.split()
category = parts[0]
price = int(parts[1])
discount = int(parts[2])

actual_cost = price * (1 - discount / 100.0)
category_expenses[category] += actual_cost

min_expense_category = min(category_expenses, key=category_expenses.get)
return min_expense_category

# Пример ввода
n = 5
purchases = [
"milk 100 10",
"clothes 1100 60",
"other 3000 55",
"meat 300 40",
"milk 120 20"
]

# Вызываем функцию и печатаем результат
result = find_min_expense_category(n, purchases)
print(result) # Ожидаемый результат: "meat"
чтоб на входе был файл
 def find_min_expense_category(n, purchases):  
from collections import defaultdict

category_expenses = defaultdict(float)

for purchase in purchases:
parts = purchase.split()
category = parts[0]
price = int(parts[1])
discount = int(parts[2])

actual_cost = price * (1 - discount / 100.0)
category_expenses[category] += actual_cost

min_expense_category = min(category_expenses, key=category_expenses.get)
return min_expense_category

# Пример чтения из файла
def read_purchases_from_file(filename):
with open(filename, 'r') as file:
purchases = file.readlines()
purchases = [purchase.strip() for purchase in purchases] # Удаление лишних пробелов и переводов строк
return purchases

# Указываем имя файла
filename = 'purchases.txt'

# Читаем покупки из файла
purchases = read_purchases_from_file(filename)

# Количество строк в файле
n = len(purchases)

# Вызываем функцию и печатаем результат
result = find_min_expense_category(n, purchases)
print(result) # Ожидаемый результат: "meat"
Убедитесь, что файл purchases.txt содержит данные в правильном формате, например:
 milk 100 10 
clothes 1100 60
other 3000 55
meat 300 40
milk 120 20
Александр БрендиУченик (97) 6 месяцев назад
а как сделать, чтоб на входе был файл?
Татьяна Просветленный (36384) Александр Бренди, и версия чтобы с файлом была и туда заносятся данные
ТатьянаПросветленный (36384) 6 месяцев назад
проверяй внимательнее все
ТатьянаПросветленный (36384) 6 месяцев назад
в итоге программа все выводит нормально по заданию твоему
Александр Бренди Ученик (97) Татьяна, у меня похоже слишком много данных, понял) в любом случае спасибо большое!
Похожие вопросы