Python实现商城购物经典案例

python,实现,商城,购物,经典,案例 · 浏览次数 : 31

小编点评

```python class Store: # Store_db=[] # 类属性 商城仓库 数据不多的话不需要这个仓库,保存在商品信息数据库里面就行 opea_db=[] # 商品数据库 def __init__(self,name): self.name=name # 第一个: 店名或者用户名 传参... def opea(self): # 店铺方法 self.name=input('请输入店铺名称:') # Store.opea_db.append({'store_name':self.name,'num':0}) print(f'店铺名称:{self.name}') def user(self): # 客户买东西 while True: select_store=input('请输入你要选择的店铺(按1退出添加):') if select_store==\"1\": # 整合时的变化点 break def f(o): if o['name']==select_store: print('商品名:',o.get('store_name'),end='\\t') print('库存数量',o.get('num'),end='\\t') print() return o # 如果没有返回值return 就执行下面一行代码 if not list(filter(f,Store.opea_db)): print('没有该店铺!!!') else: select_sp=input('请选择你要购买的商品:') a=int(input('请输入需要购买的数量:')) if list(filter(f,Store.opea_db)): if o['store_name']==select_sp: if o['num'] >0: o['num']-=a print('购买成功!!!') break else: print('商品数量必须大于所购买的数量,商品数量减去购买数量') else: print('没有该商品或者缺货!!!') ```

正文

一:代码前思路解析 

      建一个商城类(Store)

A.开店(写一个开店的方法,添加商品信息)
商家:店名
1.商品 2.有没有货(相同货的个数) 3.价格 4.评价(是用户评价的) 5.销售量 ----属性
B.用户买东西(写一个购物的方法,先选择商城)
  选择一个商城及购买对应商城商品,购买的数量要大于库存数量,购买一件库存就要减-1
  opea_db=[{'name':'唯一店铺名称',store_name':['多个商品'],'num':'0','comment':['好用','好看']}]

 

二:代码分步骤购物:

1.在商城添加商品:

opea_db = [{'store_name': '手机','num': 1}]
while True: store_name=input('请输入需要存放的商品(按1退出添加1):')

# def f(o): # list(filter(f,opea_db)) # 输出每个字典 def f(i): if i['store_name']==store_name: num=i['num']+1 i['num']=num return i else: # 新添加的商品数量默认为0 没有库存 opea_db.append({'store_name':store_name,'num':0}) list(filter(f,opea_db)) print(opea_db)

或者这样写(for循环):

while True:
    store_name=input('请输入需要存放的商品(按1退出添加):')
if store_name=="1"
break # def f(o): # print(o) # list(filter(f,opea_db)) # 输出每个字典 for i in opea_db: if i['store_name']==store_name: num=i['num']+1 # 在默认值基础上增加 # print(num) i['num']=num else: opea_db.append({'store_name': store_name,'num':0 }) print(opea_db)

 运行截图:

 此写法缺陷:

增加新的商品且再次增加对应数量的话打印输出只显示最终商品数量即可,不要把前一次商品名、数量等信息都显示出来,重复!

# 新添加的商品数量默认为0 没有库存
            opea_db.append({'store_name':store_name,'num':0})   # 此部分没有过滤器过滤,导致输出存在重复

代码优化:新增商品

opea_db = [{'store_name': '手机','num': 1}]
while True:
    store_name=input('请输入需要存放的商品(按1退出添加):')
    if store_name=="1"
     break
    # def f(o):
    #     list(filter(f,opea_db))  # 输出每个字典
    def f(i):
        if i['store_name']==store_name:
           num=i['num']+1
           i['num']=num
           return i
    #     else:
    #         # 新添加的商品数量默认为0 没有库存
    #         opea_db.append({'store_name':store_name,'num':0})
    #
    # list(filter(f,opea_db))
    # print(opea_db)

    # 如果新添加商品(i['store_name']不等于store_name)没有返回值return 就None =====假的
      需要执行否定语句,即下述代码 ---添加商品
    if not list(filter(f,opea_db)):
        # opea_db.append({'store_name':store_name,'num':1})
        opea_db.append({'store_name': store_name,'num': 1})
    print(opea_db)
     #if store_name=="1":
       #break

运行截图:

或者这样写:

class Store:
    # Store_db=[]   # 类属性   商城仓库  数据不多的话不需要这个仓库,保存在商品信息数据库里面就行
    opea_db=[]  # 商品数据库
    # opea_db = [{'store_name': '手机','num': '0','comment': ['好用','好看']}]
    # opea_db = [{'name': '唯一店铺名称','store_name':['多个商品'],'num':'0','comment':['好用','好看']}]
    # def __init__(self,name):
    #     self.name=name   # 第一个: 店名或者用户名 传参...

    def opea(self,name):  # 店铺方法
        self.name=name  # 店铺名字
        # opea_db=[{'store_name':'手机','num':'0'}]
        while True:
            store_name=input('请输入需要存放的商品(按1退出添加):')
            # Store.opea_db.append({'store_name':store_name,'num':0})
            # if store_name=="1":
            #     break
            # # num 默认为1
            # opea_db = []
            # while True:
            #     store_name=input('请输入需要存放的商品(按1退出添加1):')
                # def f(o):
                #     printist(filter(f,opea_db))  # 输出每个字典
            def f(i):  # i 为字典
                if i['store_name']==store_name:
                    num=i['num']+1  # 改变相同商品数量
                    i['num']=num  # 赋值
                    return i    # 以上执行f()函数代码的东西
            # 如果新添加商品(i['store_name']不等于store_name)没有返回值return 就None =====假的 需要执行否定语句,即下述代码 ---添加商品
            if not list(filter(f,Store.opea_db)):
                # opea_db.append({'store_name':store_name,'num':1})
                Store.opea_db.append({'name': self.name,'store_name':store_name,'num': 1})
            print(Store.opea_db)
            if store_name==1:
                    break

        # Store.Store_db.append({'name':self.name})

    def user(self): # 客户买东西

        '''
        # 1.选择店铺
          2.把该店铺的商品给你显示出来
          3.购买(选择): 数量-1 所购买的商品必须是在第一步
          return:
        '''
        # 选择店铺
        select_store=input('请选择你需要的店铺:')
        def sele(o):
            if o['store_name']==Store.store_name:
                # 把对应店铺里面的商品展示给用户看
                Store
            else:
                print('没有改店铺!')
        filter(sele,Store.Store_db)

shangcheng=Store()
while True:
    d_name=input('请输入需要创建的店铺名称:')
    shangcheng.opea(d_name)

2.进店铺买东西

li=[{'name': '电信', 'store_name': '手机', 'num': 1}, {'name': '电信', 'store_name': '苹果', 'num': 1}]
while True:
    select_store=input('请输入你要选择的店铺:')
    def f(o):
        if o['name']==select_store:
            print(o.get('store_name'),end='\t')
            print(o.get('num'),end='\t')
            print()
            return o   # 如果没有返回值return 就执行下面一行代码

    # if not list(filter(f,li)):
    #     print('没有该店铺!!!')

    if list(filter(f,li)):
        select_sp=input('请选择你要购买的商品:')
        def f2(o):
            if o['store_name']==select_sp:
                if o['num']>0:
                    o['num']-=1
                    print('购买成功!!!')
                    return o

        if not list(filter(f2,li)):
            print('没有该商品或者缺货!!!')

    else:
        print('没有该店铺!!!')

运行截图:

三.整体整合代码 实现进店铺买东西效果

class Store:
    # Store_db=[]   # 类属性   商城仓库  数据不多的话不需要这个仓库,保存在商品信息数据库里面就行
    opea_db=[]  # 商品数据库
    # opea_db = [{'store_name': '手机','num': '0','comment': ['好用','好看']}]
    # opea_db = [{'name': '唯一店铺名称','store_name':['多个商品'],'num':'0','comment':['好用','好看']}]
    # def __init__(self,name):
    #     self.name=name   # 第一个: 店名或者用户名 传参...

    # def opea(self,name):  # 店铺方法
    def opea(self):  # 店铺方法
        self.name=input('开店成功!!! 请输入店铺名字:')  # 整合时的变化点
        # self.name=name  # 店铺名字
        # opea_db=[{'store_name':'手机','num':'0'}]
        while True:
            store_name=input('请输入需要存放的商品(按1退出添加):')
            # Store.opea_db.append({'store_name':store_name,'num':0})
            # if store_name=="1":
            #     break
            # # num 默认为1
            # opea_db = []
            # while True:
            #     store_name=input('请输入需要存放的商品(按1退出添加1):')
                # def f(o):
                #     printist(filter(f,opea_db))  # 输出每个字典
            def f(i):  # i 为字典
                if i['store_name']==store_name:
                    num=i['num']+1  # 改变相同商品数量
                    i['num']=num  # 赋值
                    return i    # 以上执行f()函数代码的东西
            # 如果新添加商品(i['store_name']不等于store_name)没有返回值return 就None =====假的 需要执行否定语句,即下述代码 ---添加商品
            if not list(filter(f,Store.opea_db)):
                # opea_db.append({'store_name':store_name,'num':1})
                Store.opea_db.append({'name': self.name,'store_name':store_name,'num': 1})
            print(Store.opea_db)
            if store_name=="1":
                    break

        # Store.Store_db.append({'name':self.name})

    def user(self): # 客户买东西


        '''
        # 1.选择店铺名称
          2.展示对应店铺的所有商铺信息
          3.店铺有这样的商品==没有对应商品就要过滤掉 ,购买(选择): 数量-1 所购买的商品
        '''
        # 选择店铺
        # select_store=input('请输入你要选择的店铺:')
        # def sele(o):
        #     if o['store_name']==Store.store_name:
        #         # 把对应店铺里面的商品展示给用户看
        #         Store
        #     else:
        #         print('没有改店铺!')
        # filter(sele,Store.Store_db)
        while True:
            select_store=input('请输入你要选择的店铺(按1退出添加):')
            if select_store=="1":  # 整合时的变化点
                break
            def f(o):
                if o['name']==select_store:
                    print('商品名:',o.get('store_name'),end='\t')
                    print('库存数量',o.get('num'),end='\t')
                    print()
                    return o   # 如果没有返回值return 就执行下面一行代码

            # if not list(filter(f,li)):
            #     print('没有该店铺!!!')

            # if list(filter(f,li)):  # 合并时需要修改的地方
            if list(filter(f,Store.opea_db)):
                select_sp=input('请选择你要购买的商品:')
                a=int(input('请输入需要购买的数量:'))

                # 如果购买不止一个商品在这里增加一个判断就行了
                # 新加一个输入数量
                # 商品数量必须大于所购买的数量,商品数量减去购买数量
                def f2(o):
                    if o['store_name']==select_sp:
                        # if o['num']>0:
                        if o['num'] >=a:
                            # o['num']-=1
                            o['num'] -=a
                            print('购买成功!!!')
                            return o
                    # 以上过滤器只做满足条件的事情,不能写else语句!
                if not list(filter(f2,Store.opea_db)):
                    print('没有该商品或者缺货!!!')

                # list(filter(f,))

            else:
                print('没有该店铺!!!')
            #
            # print(Store.opea_db)  # 每次都打印一下


shangcheng=Store()
while True:
    # d_name=input('请输入需要创建的店铺名称:')
    # shangcheng.opea(d_name)
    inp=input('请选择:')
    if inp=="1":
        shangcheng.opea()
    else:
        shangcheng.user()

运行截图:

 

与Python实现商城购物经典案例相似的内容:

Python实现商城购物经典案例

一:代码前思路解析 建一个商城类(Store) A.开店(写一个开店的方法,添加商品信息) 商家:店名 1.商品 2.有没有货(相同货的个数) 3.价格 4.评价(是用户评价的) 5.销售量 属性B.用户买东西(写一个购物的方法,先选择商城) 选择一个商城及购买对应商城商品,购买的数量要大于库存数量

单例模式

python实现单例模式 在Python中实现单例模式可以通过装饰器、元类或者直接在类中实现。以下是一个使用装饰器实现的单例模式示例: def singleton(cls): instances = {} def get_instance(*args, **kwargs): if cls not i

Python实现输入三个整数x,y,z,请把这三个数由小到大输出;

num1=input('请输入第一个数,x:') num2=input('请输入第二个数,y:') num3=input('请输入第三个数,z:') if num1>num2: # if 语句判断 num1,num2=num2,num1 if num1>num3: num1, num3 = num3

python实现在函数中捕获某个异常,然后将异常的具体信息写入error.txt文件中;

在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确) 可以增加try来捕获异常 try这个关键字来捕获异常try:尝试执行的代码except:出现错误的处理 def func(): try: print(a) except NameError as e1: with open('error

python实现创建一个银行类,这个类实现了两个方法,第一个方法可以将用户信息写入到文件中,第二个方法可以读取文件中的用户信息出来

class bank: def user_info(self): a=input('请输入用户信息:') # 不写encoding = 'utf-8'中文会乱码 with open('info.txt','w',encoding='utf-8') as f: f.write(a) def get_i

Python 实现 定义个矩形类,有长和宽两个实例属性,还有一个计算面积的方法

思路:'''1.定义矩形类2.定义属性 属性分:类属性和实例属性实例属性==》self.属性 》self是一个参数在一个方法中==》_init_方法 3.定义方法 def Area(self): s=self.length*self.width ''' class Square: def __ini

Python实现类别变量的独热编码(One-hot Encoding)

本文介绍基于Python下OneHotEncoder与pd.get_dummies两种方法,实现机器学习中最优的编码方法——独热编码的方法~

Python实现随机森林RF并对比自变量的重要性

本文介绍在Python环境中,实现随机森林(Random Forest,RF)回归与各自变量重要性分析与排序的过程~

使用Python实现深度学习模型:序列到序列模型(Seq2Seq)

本文介绍了序列到序列(Seq2Seq)模型的基本原理,并使用 Python 和 TensorFlow/Keras 实现了一个简单的英法翻译模型。

基于Python和TensorFlow实现BERT模型应用

本文分享自华为云社区《使用Python实现深度学习模型:BERT模型教程》,作者: Echo_Wish。 BERT(Bidirectional Encoder Representations from Transformers)是Google提出的一种用于自然语言处理(NLP)的预训练模型。BERT