Как вызвать функцию в другой файл кода без получения сообщений об ошибках;а как сравнить словари со списками? - PullRequest
0 голосов
/ 15 апреля 2019

Я делаю интернет-магазин в качестве домашнего задания. Я успешно создал словари предметов, включая их запас и цену, из текстового файла. Мы должны создать входные операторы, в которых пользователи сообщают нам, чего они хотят и сколько. Затем мы должны создать две функции в отдельном скрипте Python.

Меня беспокоит функция 1 Цель этой функции:

  • Прокручивать элементы в groc_list (который я создал)
  • Извлеките цену за единицу товара из словаря цен.
  • Проверьте запас товаров в словаре запаса по сравнению с количеством товаров, выбранных в unit_list.

Если на складе недостаточно товаров, мы должны соответственно отреагировать на них.

Функция должна обновлять словарь запаса, чтобы показать уменьшение общего запаса. (например, если покупатель выбирает 2 галлона молока, ключ словаря запаса - значение «молоко» должно быть уменьшено на 2).

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

Я опускаю первую часть кода, где я создаю словари, а что нет. В этом коде я получаю сообщение об ошибке при попытке вызвать функцию с ее аргументами. Я просто даю обычную «ошибку»

#code for main grocery store
#empty user shopping list
groc_list=[]
unit_list=[]

while 'done' not in groc_list:
    groc_item=input('\nType the grocery item you would like to purchase.\If you are done shopping, type done: ')
    groc_list.append(groc_item)
    if groc_item == 'done':
        print('Thanks for shopping')

    #asks user quantity
    elif groc_item in stock.keys():
        unit_quan=input('How many would you like? ')
        unit_list.append(unit_quan)

    else:
        print('We are sorry. We do not recognize that item.\Please check your spelling.')

# removes 'done' 
groc_list.pop()

# function 1
from grocery import grocery_cost
grocery_cost(groc_list, prices, stock, unit_list)

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

#The code for function 1
def grocery_cost(groc_list, prices, stock, unit_list):
    """Checks stock of items vs items customer selects. Prints if item is unavailable"""

    count=0
    for item in groc_list:
        if stock[item] == 0:
            print('We are sorry. We are out of stock of that item, \
                    and it will not be added to your cart.')

        elif stock[item] >= unit_list(count):
            y=unit_list(count)*prices[item]
            print('%s %15.2f \n' %(item, y))
            stock[item]=stock[item]-unit_list(count)

        else:
            print('Only', stock[item], ' of that item is available. \
                    Those have been added to your cart.')
            y=stock[item]*prices[item]
            unit_list.pop(count)
            unit_list.insert(count, stock[item])
            print('%s %15.2f \n' %(item, y))
            stock[item]=stock[item]-unit_list(count)

        count+=1

        return y

Я ожидал, что программа рассчитает мои итоговые значения для каждого элемента и позволит мне взять возвращенное значение из функции и использовать его в своем коде, но вместо этого оно завершится.

1 Ответ

1 голос
/ 15 апреля 2019

unit_list (count) должен быть unit_list [count] Попробуйте, пожалуйста!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...