Что делаю не так в реализации задания?
def cost_delivery(factor, *quantities, discount=0):
result = 5
for quantity in quantities:
result += quantity * factor
result = result - discount
return quantity
print(cost_delivery(10, 1, 2, 3, discount=0.5))
Онлайн-магазин "У Бобра" предоставляет услугу экспресс доставки своих товаров по цене 5¤ за первый товар в заказе и 2¤ - за все последующие товары. Необходимо реализовать функцию, принимающую в качестве первого параметра количество товаров в заказе quantity, но также должен присутствовать параметр, передаваемый только по ключу discount.
Параметр discount по умолчанию имеет значение 0 – скидки нет. Принимает значение от 0 до 1. Функция cost_delivery возвращает общую сумму за доставку товара с учетом скидки.
Следует предположить, что функция cost_delivery при вызове может принимать любое количество позиционных аргументов.
Пример:
cost_delivery(2, 1, 2, 3) При таком вызове quantity равняется 2, а параметр discount по умолчанию имеет значение 0.
Подскажите где делаю ошибку. Потому что идейно выходит неправильно.Возможно задание не понял
Ответы (1 шт):
Исходя из условий задачи должно быть вот так:
def cost_delivery(quantity, *args, discount=0):
if discount >=0 and discount <= 1:
if quantity >= 1:
result = (quantity - 1) * 2 + 5
result = result - result * discount
else:
result = 0
else:
raise Exception("The discount shouldn't be an less 0 or more 1")
return result