我是小白,现正处于学习阶段,为此在这里留下自己的学习笔记。如果有错误的地方还请大家见谅,评论或者私发我错误的地方哦,谢谢大家,嘿嘿~
一、需要用到的知识
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基础语法的代码案例。
此思想仅代表作者个人想法,也仅供您参考,我的想法可能也不太成熟,相信您的想法比我的想法更好。
如果您感觉有用的话,请点赞评论分享收藏哦,非常感谢,好人一生平安!!
祝大家天天开心❀❀❀❀❀❀*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。