Система заказа пиццы

Есть ли место для улучшений в этом коде. Я новичок в программировании (python3), изучении и практике функций, связанных с аргументами в последнее время.

def make_pizza(*toppings, **pizza_info):

    """Creating a dictionary for pizza information"""
    pizza = {}

    pizza_toppings = [topping for topping in toppings]
    pizza['toppings'] = pizza_toppings

    for key, value in pizza_info.items():
        pizza[key] = value

    return pizza



def show_pizza(pizza):

    """Showing the order with the information provided by make_pizza() function."""

    print("You've ordered " + str(pizza['size']) + " inches size " + pizza[
        'crust'].title() + " crust pizza with the toppings of:")

    for topping in pizza['toppings']:
        print("-" + topping.title())

# Taking order in a form of dictionary structure 
order = make_pizza('cheese', 'mushroom', size=12, crust="thin")

# Show the order message 
show_pizza(order)

1 ответ
1

Вы можете использовать стандартные функции копирования вместо копирования вручную:

from copy import copy

def make_pizza(*toppings, **pizza_info):
    pizza = pizza_info.copy()
    pizza['toppings'] = copy(toppings)    
    return pizza

И, возможно, используйте dict-computing для слияния информации вместо мутации пиццы:

def make_pizza(*toppings, **pizza_info):
    return {
        **pizza_info,
        'toppings': copy(toppings)    
    }

Для печати используйте f-строки для упрощения форматирования:

print(f"You've ordered {pizza['size']} inches size {pizza[
    'crust'].title()} crust pizza with the toppings of:")

  • Спасибо за ваше руководство. Я многое понял из этого. Надо очень быстро применить эту практику. 🙂

    — Дуб Соэ Сан

  • Может, я ответил слишком быстро. Обратите внимание, что: — функция копирования предоставит вам тот же тип, что и ввод, который вы ей дадите, поэтому вы получите кортеж для начинки, а не список (что может быть так же хорошо) — копии здесь на самом деле не нужны , поскольку * args и ** kwargs уже создаются заново при вызове функции — копии только мелкие. Нет никакой разницы, когда содержимое представляет собой только строки, поскольку они неизменяемы, но если у вас есть что-то изменяемое, это может вызвать проблемы — но если вы избегаете что-либо мутировать в своих программах, это не будет проблемой

    — Гнурфос


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *