Вернуть строку с пробелами и заглавными буквами

Рейтинг: 0Ответов: 1Опубликовано: 08.07.2023

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

Все «заказы» выглядят сейчас примерно так: "milkshakepizzachickenfriescokeburgerpizzasandwichmilkshakepizza" Но они хотят получать заказ в виде красивой чистой строки с пробелами и прописными буквами, например: "Burger Fries Chick Pizza Pizza Pizza Напиши функцию get_order, которая принимает строку order в качестве аргумента и возвращает строку с более четким порядком, с пробелами и прописными буквами. Примечания: Строка на выходе может содержать дубликаты, например "Chicken Pizza Pizza" Персонал кухни ожидает, что блюда будут расположены в том же порядке, в каком они указаны в меню. Пункты меню достаточно просты, пункт не может быть частью другого пункта

Вот такое решение пока придумал, но система не принимает, помогите пожалуйста.

def get_order(order: str) -> str:
    menu = ("Burger", "Fries", "Chicken", "Pizza", "Sandwich", "Onionrings", "Milkshake", "Coke")
    result = []
    for i in range(len(order)):
        if order[i:] in menu:
            result.append(order[i:].capitalize())
    return " ".join(result)

Ответы

▲ 2Принят

Суть решения - удалять слова из меню из заказа по очереди, считая количество выбывших букв, тем самым считая кол-во определенных блюд.

def get_order(order: str) -> str:
    menu = ("Burger", "Fries", "Chicken", "Pizza", "Sandwich", "Onionrings", "Milkshake", "Coke")
    result, length = [], len(order)

    for item in menu:
        result += [item] * ((length - len(order.replace(item.lower(), ''))) // len(item))
    return " ".join(result)


print(get_order('milkshakepizzachickenfriescokeburgerpizzasandwichmilkshakepizza'))
Burger Fries Chicken Pizza Pizza Pizza Sandwich Milkshake Milkshake Coke