В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Goldman2017
Goldman2017
10.02.2020 00:17 •  Информатика

Станислав — менеджер магазина «Перекрёсточек ему среди товаров, которых осталось менее 100 штук, найти три таких, за покупку которых дают наибольшее количество бонусных . Для этого разработайте функцию goods_analysis.

Функция goods_analysis принимает произвольное число параметров-товаров, каждый из которых представляет собой словарь со следующим набором ключей и значений:
ключу "название" соответствует непустая строка с наименованием товара,
по ключу "цена" записано целочисленное значение исходной цены (без учёта скидки) в рублях,
по ключу "скидка" — величина установленной на данный товар скидки в процентах (целое число),
ключ "количество" отвечает за запас товара в штуках.
Также в вашу функцию передаётся ещё один необязательный параметр — функция bonuses, принимающая товар в формате описанного выше словаря и возвращающая целое число — количество бонусных , которые будут начислены за покупку этого товара. Если функция bonuses не была передана, количество бонусных рассчитывается следующим образом: за каждый полный рубль, потраченный покупателем на оплату товара с учётом скидки, начисляется 1 бонусный .

Функция goods_analysis должна возвращать три товара — самые выгодные по начисляемым бонусным среди тех, запас которых иссякает (менее 100 штук). Гарантируется, что такие товары всегда найдутся. Если ответов несколько, выведите любой.

Формат ввода
Функция должна принимать не известное заранее количество товаров заданного формата, а также необязательный именованный аргумент bonuses.
Формат вывода
Возвращать функция должна три искомых товара в произвольном порядке.
Пример 1
Ввод Вывод
p1, p2, p3 = goods_analysis(
{'название': 'Молоко Бурёнка 0,5л', 'цена': 55, 'скидка': 1, 'количество': 1000},
{'название': 'Масло подсолнечное Золотое', 'цена': 70, 'скидка': 5, 'количество': 99},
{'название': 'Ананасы кусочками 200г', 'цена': 130, 'скидка': 50, 'количество': 1},
{'название': 'Хлеб ржано-пшеничный в/с', 'цена': 24, 'скидка': 0, 'количество': 25})
print(*sorted([p1, p2, p3], key=lambda x: x['название']), sep='\n')
{'название': 'Ананасы кусочками 200г', 'цена': 130, 'скидка': 50, 'количество': 1}
{'название': 'Масло подсолнечное Золотое', 'цена': 70, 'скидка': 5, 'количество': 99}
{'название': 'Хлеб ржано-пшеничный в/с', 'цена': 24, 'скидка': 0, 'количество': 25}
Пример 2
Ввод Вывод
p1, p2, p3 = goods_analysis(
{'название': 'Шоколад Заливные луга', 'цена': 69, 'скидка': 15, 'количество': 93},
{'название': 'Шоколадное молоко 0,2л', 'цена': 24, 'скидка': 3, 'количество': 5},
{'название': 'Печень трески Берег', 'цена': 78, 'скидка': 0, 'количество': 4},
{'название': 'Колбаса Докторская ГОСТ', 'цена': 200, 'скидка': 20, 'количество': 129},
{'название': 'Сок Южный рай апельсин 2л', 'цена': 84, 'скидка': 13, 'количество': 17},
bonuses=lambda x: int(1 / (x['количество'] + 1) * 100))
print(*sorted([p1, p2, p3], key=lambda x: x['название']), sep='\n')
{'название': 'Печень трески Берег', 'цена': 78, 'скидка': 0, 'количество': 4}
{'название': 'Сок Южный рай апельсин 2л', 'цена': 84, 'скидка': 13, 'количество': 17}
{'название': 'Шоколадное молоко 0,2л', 'цена': 24, 'скидка': 3, 'количество': 5}
Пример 3
Ввод Вывод
p1, p2, p3 = goods_analysis(
{'название': 'Мармелад Машинки фруктовые', 'цена': 67, 'скидка': 2, 'количество': 93},
{'название': 'Фасоль в томате (стекло)', 'цена': 90, 'скидка': 30, 'количество': 65},
{'название': 'Масло подсолнечное Золотое', 'цена': 70, 'скидка': 5, 'количество': 99},
{'название': 'Ананасы кусочками 200г', 'цена': 130, 'скидка': 50, 'количество': 1})

print(*sorted([p1, p2, p3], key=lambda x: x['название']), sep='\n')
{'название': 'Ананасы кусочками 200г', 'цена': 130, 'скидка': 50, 'количество': 1}
{'название': 'Мармелад Машинки фруктовые', 'цена': 67, 'скидка': 2, 'количество': 93}
{'название': 'Масло подсолнечное Золотое', 'цена': 70, 'скидка': 5, 'количество': 99}
Примечания
Необходимо отправить на проверку только код самой функции, вызывающий код отправлять не следует.

PYTHON

Показать ответ
Ответ:
Yalikhan
Yalikhan
10.05.2020 15:15
const n=10;
var
  i,k,min,max:integer;
  x,y:array[1..n]of integer;
  z:array[1..2*n]of integer;

function four(n:integer):string;
var s:string;
begin
repeat
  s:=s+IntToStr(n mod 4);
  n:=n div 4;
  until n=0;
result:=ReverseString(s);
end;

begin
for i:=1 to n do
  begin
  x[i]:=random(-10,10);
  y[i]:=random(-10,10);
  if (x[i] mod 2=0) and (x[i]>0) then
    begin
    k:=k+1;
    z[k]:=x[i];
    if k=1 then
      begin
      min:=z[1];
      max:=z[1];
      end;
    if z[k]>max then max:=z[k];
    if z[k]<min then min:=z[k];
    end;
  if (y[i] mod 2=0) and (y[i]>0) then
    begin
    k:=k+1;
    z[k]:=y[i];
    if k=1 then
      begin
      min:=z[1];
      max:=z[1];
      end;
    if z[k]>max then max:=z[k];
    if z[k]<min then min:=z[k];
    end;
  end;
write('Массив X:');
for i:=1 to n do write(x[i]:4);
writeln;
write('Массив Y:');  
for i:=1 to n do write(y[i]:4);
writeln;
write('Массив Z:');  
for i:=1 to k do write(z[i]:4);
writeln;
write('Измененный массив Z:');
for i:=1 to k do
   begin
   if z[i]=min then z[i]:=max
     else
     if z[i]=max then z[i]:=min;
   write(z[i]:4);
   end;
writeln;
write('Массив Z по основанию 4:');  
for i:=1 to k do   write(four(z[i]):4);
end.
0,0(0 оценок)
Ответ:
карина0212
карина0212
31.10.2021 10:14
2626  2618  2624 2628  2826  2426  1826   610 
+           -        -       -        -        +        +       +
26 26                                     24 26 18 26  6 10
99899                                    79899 19899 22244
4 плюсика. 
Из приведённых чисел могут получиться в результате работы автомата 4 числа. 
Это 2626, 2426, 1826, 610. 
В числах 2618, 2624 последовательности убывающие (26-18, 26-24).
В числах 2628, 2826 есть число 28, которое не может быть получено суммой трёх десятичных цифр, (максимум 9+9+9=27). 
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота