Python数据结构

用类,查找,排序等数据结构(Python),实现关于外卖平台的菜品信息管理
输入菜品的名称就能输出菜品的价格等菜品信息,可以增删菜品。

直接上代码,==========================================
外卖平台菜品信息的Python代码实现,包括菜品名称、价格、库存等信息的存储和管理,以及增删菜品等功能:

class Dish:
    def __init__(self, name, price, inventory):
        self.name = name
        self.price = price
        self.inventory = inventory
        
class DishManager:
    def __init__(self):
        self.dishes = []
        
    def add_dish(self, dish):
        self.dishes.append(dish)
        
    def remove_dish(self, name):
        for dish in self.dishes:
            if dish.name == name:
                self.dishes.remove(dish)
                break
        
    def find_dish(self, name):
        for dish in self.dishes:
            if dish.name == name:
                return dish
        
    def show_dishes(self):
        for dish in self.dishes:
            print("菜品名称:", dish.name)
            print("菜品价格:", dish.price)
            print("菜品库存:", dish.inventory)
            
dish_manager = DishManager()

# 添加菜品
dish_manager.add_dish(Dish("宫保鸡丁", 29.9, 100))
dish_manager.add_dish(Dish("麻婆豆腐", 25.0, 80))
dish_manager.add_dish(Dish("水煮肉片", 35.0, 120))

# 显示菜品列表
print("菜品信息:")
dish_manager.show_dishes()

# 查找菜品信息
name = input("请输入要查找的菜品名称:")
dish = dish_manager.find_dish(name)
if dish:
    print("菜品名称:", dish.name)
    print("菜品价格:", dish.price)
    print("菜品库存:", dish.inventory)
else:
    print("该菜品不存在")

# 删除菜品
name = input("请输入要删除的菜品名称:")
dish_manager.remove_dish(name)
print("删除成功")

# 显示菜品列表
print("菜品信息:")
dish_manager.show_dishes()

运行程序后,可以进行菜品的添加、删除、查找等操作。例如,添加了三个菜品:"宫保鸡丁","麻婆豆腐","水煮肉片",可以通过输入菜品名称来查找相应的菜品信息,也可以删除菜品,最后再次显示所有菜品的信息。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7803746
  • 这篇博客你也可以参考下:数据结构 经典排序算法,冒泡排序,选择排序,直接插入排序,希尔排序,快速排序,归并排序,二分查找。原理及python实现。
  • 除此之外, 这篇博客: 编写python程序对列表元素进行判断,去除重复元素并排序输出中的 编写程序,测试仅包含整数型元素的列表。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    要求键盘输入,并进行数据有效性判断,去掉重复元素后,升序输出列表。提示可采用字符串函数isdigit()判断是否为数值型

    输入格式: 输入一个数字序列,如:1 23 33 45 6 7 33

    输出格式: 针对合法输入,输出去重且按升序排序后的列表。例如:[1, 6, 7, 23, 33, 45]。

    针对非法输入,输出“Wrong Format.”(非法输入指的是非数值型)

    输入样例1: 在这里给出一组输入。例如:

    123 45 32 asd
    输出样例1:
    在这里给出相应的输出。例如:
    
    Wrong Format.
    输入样例2:
    在这里给出一组输入。例如:
    
    123 34 5 67 89 56 89 76 123 123
    输出样例2:
    在这里给出相应的输出。例如:
    
    [5, 34, 56, 67, 76, 89, 123]
    
  • 您还可以看一下 黄棒清老师的Python实战量化交易理财系统课程中的 初步模拟股票交易,实现买入和卖出时机小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以根据你的需求给出一个简单的菜品信息管理系统的实现思路。具体来说,这个系统可以由一个class来实现,这个class包含一个字典来存储菜品信息,键是菜品名称,值是一个包含菜品信息的字典。为了实现类似查找和排序这样的操作,我们可以将这个字典的键或值存储到一个有序的列表中,并用一个函数来保持这两者同步更新。下面是一个简单实现的代码示例:

    class DishManager:
        def __init__(self):
            self.dishes = {}
            self.sorted_keys = []
    
        def add_dish(self, name, price, description):
            self.dishes[name] = {'price': price, 'description': description}
            self.sorted_keys = sorted(list(self.dishes.keys()))
    
        def remove_dish(self, name):
            self.dishes.pop(name)
            self.sorted_keys = sorted(list(self.dishes.keys()))
    
        def get_dish_price(self, name):
            return self.dishes[name]['price']
    
        def get_dish_description(self, name):
            return self.dishes[name]['description']
    
        def get_sorted_dish_names(self):
            return self.sorted_keys
    

    在这个类中,我们使用了字典来存储菜品信息,使用菜品名称作为键,值是一个字典包含菜品价格和描述。为了便于查找和排序,我们使用了一个有序的列表soted_keys来存储菜品名称,并在添加和删除菜品时保持这个列表与字典中的键同步更新。这样做的好处是,我们可以利用有序列表的一些特性来实现查找和排序。例如,我们可以使用列表的index方法来查找某个名称的菜品所在的位置,再用这个位置来从字典中查找菜品价格和描述。我们也可以对有序列表进行排序,这会自动将字典中的键按照名称排序。

    下面是一个使用这个类的示例代码:

    dish_manager = DishManager()
    dish_manager.add_dish('Steak', 20, 'Grilled beef with vegetables')
    dish_manager.add_dish('Pasta', 15, 'Homemade tomato sauce with pasta')
    dish_manager.add_dish('Salad', 10, 'Fresh greens with toppings')
    
    print(dish_manager.get_sorted_dish_names())  # ['Pasta', 'Salad', 'Steak']
    print(dish_manager.get_dish_price('Steak'))  # 20
    print(dish_manager.get_dish_description('Pasta'))  # 'Homemade tomato sauce with pasta'
    
    dish_manager.remove_dish('Steak')
    
    print(dish_manager.get_sorted_dish_names())  # ['Pasta', 'Salad']
    

    在这个示例中,我们首先创建一个DishManager实例,并添加了三个菜品。然后我们使用get_sorted_dish_names方法获取菜品名称的有序列表,并打印出来。接着我们使用get_dish_price方法获取一道菜的价格,并使用get_dish_description方法获取另一道菜的描述。然后我们删除了一道菜,再次获取菜品名称的有序列表。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^