Возможно, я в корне неправильно понимаю отступы в python? - Python - PullRequest
1 голос
/ 19 июня 2020

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

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

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

inv = maxkey["Inventory"]

- это строка, в которой происходит ошибка. Не знаю как исправить. Должен ли я вместо этого использовать списки для этого проекта? Есть недоработка в логи c? Есть скобки, которые я забыл? Пожалуйста, дайте мне знать, если это просто недосмотр с моей стороны. Пожалуйста, свяжитесь со мной для уточнения деталей.

def loadOrder(inProd, units, loc, pref, shelves):
items = len(inProd)
while items > 0
    # What is the biggest package in the list?
    mxw = 0 # Frontal area trackers
    BoxId = {} # Identifies what is being selected
    for p in inProd:
        if p["Height"]*p["Width"] > mxw:
            mxw = p["Width"]*p["Height"]
            BoxId = p
        else:
            pass

    # What is the location with the least amount of space?
    maxi = 0.001
    maxkey = {}

    for key in loc:
        if key["Volume Efficiency"] > maxi and key["Width"] > mxw/BoxId["Height"]:
            maxi = key["Volume Efficiency"]
            maxkey = key
        else:
            pass
    maxkey["Inventory"].append(BoxId)
    weight = 0
    volTot = 0
    usedL = 0
    inv = maxkey["Inventory"]
    for k in inv:
        weight = k['Weight']+weight
        vol = k['Height']*k['Width']*k['Depth']+volTot
        usedL = k['Width']+usedL

    maxkey["Volume Efficiency"] = volTot/(maxkey['Height']*maxkey['Weight']*maxkey['Depth'])
    maxkey['Width Remaining'] = usedL
    maxkey['Capacity Remaining'] = weight
    del inProd[BoxId]
    items = len(inProd)

return [inProd, units, loc, pref, shelves]

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Отступ в определении функции должен быть таким:

def function-name():
    <some code>
    <return something>

Кроме того, вы пропустили : после того, как while l oop условие.

Это должно быть while items > 0:

0 голосов
/ 01 июля 2020

И вы не должны смешивать использование табуляции и пробелов для отступа. Стандартный способ отступа - 4 пробела. вы можете увидеть больше в PEP 8 .

...