用python语言编写购物车功能(程序设计)

我是小白,现正处于学习阶段,为此在这里留下自己的学习笔记。如果有错误的地方还请大家见谅,评论或者私发我错误的地方哦,谢谢大家,嘿嘿~

一、需要用到的知识

1.字典

2.列表

3.函数

①.高级函数(装饰器)

②.函数基础

4.while循环

5.多分支结构

6.枚举

二、功能需求

1.登录模块

输错三次将锁定五秒

2.购物模块

①.展示商品

②.输入对应编号购物

③.钱不够则不能加购

④.按9键结账

⑤.将购买后的购物信息储存到用户信息中

3.将登录模块置为购物模块的装饰器

三、思路+代码部分

1.用户信息

因为涉及时间,所以要导入时间模块

import time

用户信息,需要将用户信息以字典的形式储存进来

user={
    'user_name':'张三',     #用户名
    'password':'123z',        #密码
    'locked':False,             #锁定状态
    'countyue':8000,         #账户余额
    'shopping_cart':{}        #购物信息
}

2.登陆部分

函数

函数定义:函数是指一段可以直接被另一段程序或代码引用的程序或代码。

函数的优点:在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量

首先需要定义一个count来计数。超出三次,locked设为True,需要锁定登录模块五秒;等待之后count再次设为0。

其次用while循环来写用户登录。需要判断locked是否为False,这里规定,False状态下进行用户登录,True状态下为锁定状态需等待五秒再进行用户登录。

以下为作者写出的登陆部分代码:

#登录
def login():
    count=0
    print("输入错误三次将会锁定五秒")
    while True:
        if user['locked']:
            print("锁定五秒")
            time.sleep(5)
            print("锁定结束")
            count=0
            user['locked']=False
        pwd_user=input("请输入用户名:").strip()
        if pwd_user==user['user_name']:
            pwd_word=input("请输入账户密码:").strip()
            if pwd_word==user['password'] and count<3:
                print("登陆成功")
                break
            else:
                print("密码错误")
        else:
            print("不存在此用户")
        count+=1
        if count==3:
            user['locked']=True
# login()

运行截图

 

3.购物部分

将商品写入列表中。

goods_list = [
    ['coffee', 100],
    ['tea', 500],
    ['book', 40],
    ['furniture', 12000],
    ['iphone', 8000],
    ['study_material', 5000]
]

将商品一一展示出来可以用到枚举,用for来遍历goods_list。

for i, item in enumerate(goods_list):
    print(i, item)

此处用户未进行结账付款,需要新定义一个cost和shooping_cart来记录此次购物可能花费的金额与加购物品。

cost=0
shooping_cart={}

用while循环来写购物过程。

分支循环,如果按相应的编号则加入购物车对应的商品,按九键则结束浏览商品,进行结账部分。

选择对应商品时,要判断加购的商品是否大于账户余额,大于则输出余额不足,请选择其他商品并告知用户此时加购后的账户余额;输出购物车部分,商品,单价及购买数量。

结账时,输出用户购买的商品单,花费金额;然后可以询问用户是否购买,如果购买,则将输出购物单,账户余额,并将购物单储存到用户信息中,结束循环;如果用户只是逛一逛,选择不买,则输出您已取消订单,欢迎下次光临。

以下为作者写出的登陆部分代码:

    while True:
        choice=int(input("请输入商品对应的编号,按9键结账:").strip())
        if choice in range(0,len(goods_list)):
            goods_name=goods_list[choice][0]
            goods_price = goods_list[choice][1]
            if user['countyue']>goods_price:
                if goods_name in shooping_cart:
                    shooping_cart[goods_name]['count']+=1
                else:
                    shooping_cart[goods_name]={'price':goods_price,'count':1}
                cost+=goods_price
                user['countyue']-=goods_price
                # print("花费"+str(cost)+"还剩"+str(user['countyue']))
                print(shooping_cart)
            else:
                print("余额不足,请选择其他商品")
                print("您现在账户余额还剩"+str(user['countyue']) + "元。")
        elif choice==9:
            print(shooping_cart)
            print("花费" + str(cost) + "元。")
            buy=input("是否结账(y/n):").strip()
            if buy=='y':
                user['shopping_cart']=shooping_cart
                print("购买单:")
                print(user['shopping_cart'])
                print("账户余额还剩" + str(user['countyue']) + "元。")
                break
            elif buy=='n':
                print("您已取消订单,欢迎下次光临")
                break
            else:
                print("请正确输入")
                continue
        else:
            print("请正确输入编号")
#shopping()

4.装饰器

①.装饰器:这个函数不是给自己使用的,而是给其他函数添加功能的。

器指的是工具,而程序中的函数就是具备某一功能的工具。

装饰指的是为被装饰器对象添加额外功能。

②.为什么要用装饰器

软件的维护应该遵循开放封闭原则。

开放封闭原则指的是:

软件一旦上线运行后对修改源代码是封闭的,对扩展功能的是开放的,这就用到了装饰器。

装饰器的实现必须遵循两大原则:

1、不修改被装饰对象的源代码(比如:人的原来的性格,生活方式)。

2、不修改被装饰对象的调用方式(比如:人的原来的外貌,名字)。

想把登陆部分与购物部分合在一块,就可以用到装饰器。

先要登陆再进行购物;因为装饰器是闭包函数,即两个函数嵌套,所以第一层函数装饰谁就传谁。

以下为作者写出的登陆部分代码:

def login_intter(func):       #func一会儿传的值为shopping
    def new_func():
        login()
        func()
    return new_func

运行截图

四、完整代码

import time

user={
    'user_name':'张三',
    'password':'123z',
    'locked':False,
    'countyue':8000,
    'shopping_cart':{}
}
#登录
def login():
    count=0
    print("输入错误三次将会锁定五秒")
    while True:
        if user['locked']:
            print("锁定五秒")
            time.sleep(5)
            print("锁定结束")
            count=0
            user['locked']=False
        pwd_user=input("请输入用户名:").strip()
        if pwd_user==user['user_name']:
            pwd_word=input("请输入账户密码:").strip()
            if pwd_word==user['password'] and count<3:
                print("登陆成功")
                break
            else:
                print("密码错误")
        else:
            print("不存在此用户")
        count+=1
        if count==3:
            user['locked']=True
# login()

def login_intter(func):       #一会儿传的值为shopping
    def new_func():
        login()
        func()
    return new_func

#购物
@login_intter
def shopping():
    print("购物开始")
    goods_list = [
        ['coffee', 100],
        ['tea', 500],
        ['book', 40],
        ['furniture', 12000],
        ['iphone', 8000],
        ['study_material', 5000]
    ]
    for i, item in enumerate(goods_list):
        print(i, item)
    cost=0
    shooping_cart={}
    while True:
        choice=int(input("请输入商品对应的编号,按9键结账:").strip())
        if choice in range(0,len(goods_list)):
            goods_name=goods_list[choice][0]
            goods_price = goods_list[choice][1]
            if user['countyue']>goods_price:
                if goods_name in shooping_cart:
                    shooping_cart[goods_name]['count']+=1
                else:
                    shooping_cart[goods_name]={'price':goods_price,'count':1}
                cost+=goods_price
                user['countyue']-=goods_price
                # print("花费"+str(cost)+"还剩"+str(user['countyue']))
                print(shooping_cart)
            else:
                print("余额不足,请选择其他商品")
                print("您现在账户余额还剩"+str(user['countyue']) + "元。")
        elif choice==9:
            print(shooping_cart)
            print("花费" + str(cost) + "元。")
            buy=input("是否结账(y/n):").strip()
            if buy=='y':
                user['shopping_cart']=shooping_cart
                print("购买单:")
                print(user['shopping_cart'])
                print("账户余额还剩" + str(user['countyue']) + "元。")
                break
            elif buy=='n':
                print("您已取消订单,欢迎下次光临")
                break
            else:
                print("请正确输入")
                continue
        else:
            print("请正确输入编号")
shopping()

此篇为用python语言编写购物车功能,可以作为您练手熟悉python基础语法的代码案例。

此思想仅代表作者个人想法,也仅供您参考,我的想法可能也不太成熟,相信您的想法比我的想法更好。

如果您感觉有用的话,请点赞评论分享收藏哦,非常感谢,好人一生平安!!

祝大家天天开心❀❀❀❀❀❀*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

猜你喜欢

转载自blog.csdn.net/m0_50962679/article/details/123326964