Как пройти утверждение на этом этапе? - PullRequest
0 голосов
/ 17 октября 2018

Я создал эту функцию, которая перебирает словари.У меня есть ценовой диктант, с каждой ценой предмета сохраняется.затем словарь заказов клиентов, где хранится каждый заказ на клиента.

для каждого товара в заказе клиента, я умножил товар на цену, например ...

order 1: 10 books * $10.0

вВ конце этой функции, если общая сумма заказа превышает 100 долларов, я дам 10% скидку.5% на сумму свыше 50 долларов США и скидку, если она меньше 50 долларов США.

Теперь по некоторым причинам я не могу изменить синтаксис утверждения ниже. Придерживайтесь там формата и кодов, проблема в том, что яполучить ошибку утверждения.что, как должно быть, окончательный вывод "Готово"

Как я могу избежать перехвата утверждений на этом этапе?

В частности, я получаю ошибку утверждения в порядке1

вот чтоЯ сделал ...

def calculate_price(price, order):
    final_list = []
# Iterating through each dictionary key.
    for key, order_value in order.items():
    # Splitting on whitespace, taking the first result.
        first_word = key.split()[0]
    # Initiating condition to compare key similarities.
        if first_word in price:
        # Matching dict keys successful.
            price_value = price[first_word]
            # Multiplying key-pair values of two matched keys.
            individual_price = (order_value*price_value)
            final_list.append(individual_price)
    new = sum(final_list)
    if new >= 101:
        order3 = new - (new*0.10)
    elif new >= 51:
        order1 = new - (new*0.05)
        order1 = int(order1)
    else:
        order2 = new

price = {'book': 10.0, 'magazine': 5.5, 'newspaper': 2.0}

order1 = {'book': 10}
order2 = {'book': 1, 'magazine': 3}
order3 = {'magazine': 5, 'book': 10}

assert(95 == calculate_price(price, order1))
assert(26.5 == calculate_price(price, order2))
assert(114.75 == calculate_price(price, order3))
print("Done")

Ваши предложения и помощь очень ценятся.спасибо

1 Ответ

0 голосов
/ 17 октября 2018

https://www.tutorialspoint.com/python/assertions_in_python.htm

Когда он встречает утверждение assert, Python оценивает сопровождающее выражение, которое, как мы надеемся, истинно.Если выражение ложно, Python вызывает исключение AssertionError.

В вашем коде функция оценивается как ложная, потому что ваша функция Calculate_price возвращает значение None.

Контракт, подразумеваемый в операторе assert, заключается в том, что функция будет возвращать int или float, то есть значение стоимости, рассчитанное для одного заказа из входных данных функции.

...