Что делаю не так в реализации задания?

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 шт):

Автор решения: Andrei

Исходя из условий задачи должно быть вот так:

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
→ Ссылка