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