2022年 11月 5日

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

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

一、需要用到的知识

1.字典

2.列表

3.函数

①.高级函数(装饰器)

②.函数基础

4.while循环

5.多分支结构

6.枚举

二、功能需求

1.登录模块

输错三次将锁定五秒

2.购物模块

①.展示商品

②.输入对应编号购物

③.钱不够则不能加购

④.按9键结账

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

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

三、思路+代码部分

1.用户信息

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

import time

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

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

2.登陆部分

函数

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

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

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

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

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

  1. #登录
  2. def login():
  3. count=0
  4. print("输入错误三次将会锁定五秒")
  5. while True:
  6. if user['locked']:
  7. print("锁定五秒")
  8. time.sleep(5)
  9. print("锁定结束")
  10. count=0
  11. user['locked']=False
  12. pwd_user=input("请输入用户名:").strip()
  13. if pwd_user==user['user_name']:
  14. pwd_word=input("请输入账户密码:").strip()
  15. if pwd_word==user['password'] and count<3:
  16. print("登陆成功")
  17. break
  18. else:
  19. print("密码错误")
  20. else:
  21. print("不存在此用户")
  22. count+=1
  23. if count==3:
  24. user['locked']=True
  25. # login()

运行截图

 

3.购物部分

将商品写入列表中。

  1. goods_list = [
  2. ['coffee', 100],
  3. ['tea', 500],
  4. ['book', 40],
  5. ['furniture', 12000],
  6. ['iphone', 8000],
  7. ['study_material', 5000]
  8. ]

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

  1. for i, item in enumerate(goods_list):
  2. print(i, item)

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

  1. cost=0
  2. shooping_cart={}

用while循环来写购物过程。

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

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

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

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

  1. while True:
  2. choice=int(input("请输入商品对应的编号,按9键结账:").strip())
  3. if choice in range(0,len(goods_list)):
  4. goods_name=goods_list[choice][0]
  5. goods_price = goods_list[choice][1]
  6. if user['countyue']>goods_price:
  7. if goods_name in shooping_cart:
  8. shooping_cart[goods_name]['count']+=1
  9. else:
  10. shooping_cart[goods_name]={'price':goods_price,'count':1}
  11. cost+=goods_price
  12. user['countyue']-=goods_price
  13. # print("花费"+str(cost)+"还剩"+str(user['countyue']))
  14. print(shooping_cart)
  15. else:
  16. print("余额不足,请选择其他商品")
  17. print("您现在账户余额还剩"+str(user['countyue']) + "元。")
  18. elif choice==9:
  19. print(shooping_cart)
  20. print("花费" + str(cost) + "元。")
  21. buy=input("是否结账(y/n):").strip()
  22. if buy=='y':
  23. user['shopping_cart']=shooping_cart
  24. print("购买单:")
  25. print(user['shopping_cart'])
  26. print("账户余额还剩" + str(user['countyue']) + "元。")
  27. break
  28. elif buy=='n':
  29. print("您已取消订单,欢迎下次光临")
  30. break
  31. else:
  32. print("请正确输入")
  33. continue
  34. else:
  35. print("请正确输入编号")
  36. #shopping()

4.装饰器

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

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

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

②.为什么要用装饰器

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

开放封闭原则指的是:

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

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

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

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

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

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

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

  1. def login_intter(func): #func一会儿传的值为shopping
  2. def new_func():
  3. login()
  4. func()
  5. return new_func

运行截图

四、完整代码

  1. import time
  2. user={
  3. 'user_name':'张三',
  4. 'password':'123z',
  5. 'locked':False,
  6. 'countyue':8000,
  7. 'shopping_cart':{}
  8. }
  9. #登录
  10. def login():
  11. count=0
  12. print("输入错误三次将会锁定五秒")
  13. while True:
  14. if user['locked']:
  15. print("锁定五秒")
  16. time.sleep(5)
  17. print("锁定结束")
  18. count=0
  19. user['locked']=False
  20. pwd_user=input("请输入用户名:").strip()
  21. if pwd_user==user['user_name']:
  22. pwd_word=input("请输入账户密码:").strip()
  23. if pwd_word==user['password'] and count<3:
  24. print("登陆成功")
  25. break
  26. else:
  27. print("密码错误")
  28. else:
  29. print("不存在此用户")
  30. count+=1
  31. if count==3:
  32. user['locked']=True
  33. # login()
  34. def login_intter(func): #一会儿传的值为shopping
  35. def new_func():
  36. login()
  37. func()
  38. return new_func
  39. #购物
  40. @login_intter
  41. def shopping():
  42. print("购物开始")
  43. goods_list = [
  44. ['coffee', 100],
  45. ['tea', 500],
  46. ['book', 40],
  47. ['furniture', 12000],
  48. ['iphone', 8000],
  49. ['study_material', 5000]
  50. ]
  51. for i, item in enumerate(goods_list):
  52. print(i, item)
  53. cost=0
  54. shooping_cart={}
  55. while True:
  56. choice=int(input("请输入商品对应的编号,按9键结账:").strip())
  57. if choice in range(0,len(goods_list)):
  58. goods_name=goods_list[choice][0]
  59. goods_price = goods_list[choice][1]
  60. if user['countyue']>goods_price:
  61. if goods_name in shooping_cart:
  62. shooping_cart[goods_name]['count']+=1
  63. else:
  64. shooping_cart[goods_name]={'price':goods_price,'count':1}
  65. cost+=goods_price
  66. user['countyue']-=goods_price
  67. # print("花费"+str(cost)+"还剩"+str(user['countyue']))
  68. print(shooping_cart)
  69. else:
  70. print("余额不足,请选择其他商品")
  71. print("您现在账户余额还剩"+str(user['countyue']) + "元。")
  72. elif choice==9:
  73. print(shooping_cart)
  74. print("花费" + str(cost) + "元。")
  75. buy=input("是否结账(y/n):").strip()
  76. if buy=='y':
  77. user['shopping_cart']=shooping_cart
  78. print("购买单:")
  79. print(user['shopping_cart'])
  80. print("账户余额还剩" + str(user['countyue']) + "元。")
  81. break
  82. elif buy=='n':
  83. print("您已取消订单,欢迎下次光临")
  84. break
  85. else:
  86. print("请正确输入")
  87. continue
  88. else:
  89. print("请正确输入编号")
  90. shopping()

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

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

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

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