не может вернуть список с желаемым порядком из функции Python - PullRequest
0 голосов
/ 09 октября 2019

хочу написать код, который добавил бы к бургеру список элементов my_order в следующем порядке: первым и последним элементом бургерлиста должен быть хлеб, вторым и предпоследним элементом должен быть майонез (если он существует среди аргументов при вызове функции), затем говядина / курица, затем овощи. Пожалуйста, помогите понять, что изменить здесь

def my_odrer(*g):
    ingredients = [['long_bread', 'circle_bread'], ['mayonnaise', 'ketchup'], ['beef', 'chicken'],
                   ['cucumber', 'tomato', 'onion']]

    burgerlist = []
    for i in g:

        if i in ingredients[0]:
            burgerlist.insert(0, i)
        elif i in ingredients[1]:
            burgerlist.insert(1, i)
        elif i in ingredients[2]:
            burgerlist.append(i)
        elif i in ingredients[3]:
            burgerlist.append(i)

    if burgerlist[1] == 'mayonnaise':
        burgerlist.append(burgerlist[1])

    burgerlist.append(burgerlist[0])

    return burgerlist


print(my_odrer('circle_bread', 'beef', 'tomato', 'mayonnaise', 'ketchup'))

вывод: ['circle_bread', 'ketchup', 'mayonnaise', 'beef', 'tomato', 'circle_bread']

но я хочу получить: ['circle_bread', 'mayonnaise', 'ketchup', 'beef', 'tomato','mayonnaise', 'circle_bread']

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Это работает после того, как я добавил дополнительное условие в ваш последний оператор if.

def my_odrer(*g):
ingredients = [['long_bread', 'circle_bread'], ['mayonnaise', 'ketchup'], ['beef', 'chicken'],
               ['cucumber', 'tomato', 'onion']]

burgerlist = []
for i in g:

    if i in ingredients[0]:
        burgerlist.insert(0, i)
    elif i in ingredients[1]:
        burgerlist.insert(1, i)
    elif i in ingredients[2]:
        burgerlist.append(i)
    elif i in ingredients[3]:
        burgerlist.append(i)

if burgerlist[1] == 'mayonnaise':
    burgerlist.append(burgerlist[1])
elif burgerlist[2] == 'mayonnaise':
    burgerlist[1], burgerlist[2] = burgerlist[2], burgerlist[1]
    burgerlist.append(burgerlist[1])

burgerlist.append(burgerlist[0])

return burgerlist
0 голосов
/ 09 октября 2019

Создайте 3 списка, содержащие ингредиенты, которые должны быть в начале, середине и конце. Затем объедините их для получения окончательного результата.

def my_odrer(*g):
    breads = {'long_bread', 'circle_bread'}
    condiments = {'ketchup'} # mayonnaise not included, since it's handled specially
    meats = {'beef', 'chicken'}
    vegetables = {'cucumber', 'tomato', 'onion'}

    beginning = []
    middle = []
    end = []

    for item in g:
        if item in breads:
            beginning.append(item)
            end.append(item)

    if "mayonnaise" in g:
        beginning.append("mayonnaise")
        end.insert(-1, "mayonnaise")

    for item in g:
        if item in condiments:
            middle.append(item)
    for item in g:
        if item in meats:
            middle.append(item)
    for item in g:
        if item in vegetables:
            middle.append(item)

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