函数实践之简易购物系统

项目主要需求:

  • 用户可以自行选择功能

  • 该购物系统具有注册/登录/购物/购物车/退出登录功能

  • 用户在登录后才能使用购物/购物车/退出登录功能

  1. '''
  2. 注册
  3. 登录
  4. 购物
  5. 购物车
  6. 退出登录
  7. '''
  8. username_list = []
  9. goods_dict = {
  10. '1': '马云',
  11. '2': '马化腾',
  12. '3': '马冬梅'
  13. }
  14. shopping_cart_dict = {}
  15. def register():
  16. '''注册'''
  17. print('*' * 20, '注册', '*' * 20)
  18. while True:
  19. username_inp = input('请输入用户名: ')
  20. pwd_inp = input('请输入密码: ')
  21. re_pwd_inp = input('再次输入密码以确认: ')
  22. if pwd_inp == re_pwd_inp:
  23. with open('user_info', 'a', encoding='utf-8') as fa:
  24. fa.write(f'{username_inp}:{pwd_inp}\n')
  25. print('注册成功')
  26. break
  27. else:
  28. print('两次密码输入不一致')
  29. def login():
  30. '''登录'''
  31. print('*' * 20, '登录', '*' * 20)
  32. count = 0
  33. while count < 3:
  34. if username_list:
  35. print('你已登录')
  36. break
  37. username_inp = input('请输入用户名: ')
  38. pwd_inp = input('请输入密码: ')
  39. with open('user_info', 'r', encoding='utf-8') as fr:
  40. for user_info in fr:
  41. user_info = user_info.strip()
  42. username, pwd = user_info.split(':')
  43. if username_inp == username and pwd == pwd_inp:
  44. print('登录成功')
  45. username_list.append(username_inp)
  46. count = 3
  47. break
  48. else:
  49. print('用户名或密码错误')
  50. count += 1
  51. def shopping():
  52. '''购物'''
  53. print('*' * 20, '购物', '*' * 20)
  54. while True:
  55. if not username_list:
  56. print('请先登录')
  57. break
  58. print('''
  59. 1 马云
  60. 2 马化腾
  61. 3 马冬梅
  62. ''')
  63. choice = input('请输入你要购买的商品编号,其他任意内容回到主菜单: ')
  64. if choice not in ['1', '2', '3']:
  65. break
  66. # 判断选择商品在购物车中是否存在. 已经存在: 数量加1; 不存在: 数量为1
  67. goods_name = goods_dict[choice]
  68. if goods_name in shopping_cart_dict:
  69. shopping_cart_dict[goods_name] += 1
  70. else:
  71. shopping_cart_dict[goods_name] = 1
  72. print(f'已添加至购物车, 当前购物车商品为:\n{goods_dict}')
  73. def shopping_cart():
  74. '''购物车'''
  75. if not username_list:
  76. print('请先登录')
  77. return
  78. print('*' * 20, '购物车', '*' * 20)
  79. if shopping_cart_dict == {}:
  80. print('购物车为空,请先挑选商品')
  81. return
  82. print(f'当前购物车商品有:{shopping_cart_dict}')
  83. buy_choice = input('确认购买请输入Y,其他任意内容回到主菜单: ')
  84. if buy_choice not in ['Y', 'y']:
  85. func()
  86. shopping_cart_dict.clear()
  87. print('购买成功!')
  88. def logout():
  89. '''退出登录'''
  90. if not username_list:
  91. print('请先登录')
  92. return
  93. choice = input('确认退出登录请输入Y,其他任意内容回到主菜单: ')
  94. if choice not in ['Y', 'y']:
  95. return
  96. username_list.clear()
  97. print('已退出登录')
  98. func_dict = {
  99. '1': register,
  100. '2': login,
  101. '3': shopping,
  102. '4': shopping_cart,
  103. '5': logout
  104. }
  105. def func():
  106. '''功能菜单'''
  107. while True:
  108. print('''
  109. 1 : 注册
  110. 2 : 登录
  111. 3 : 购物
  112. 4 : 购物车
  113. 5 : 退出登录
  114. ''')
  115. choice = input('请输入编号选择功能,其他任意内容退出程序: ')
  116. if choice not in func_dict:
  117. break
  118. func_dict[choice]() # 使用函数对象调用函数
  119. func()

Python3 函数实践之简易购物系统的更多相关文章

  1. Python3 函数基础2

    目录 可变长参数 可变长形参: *args 可变长实参: *容器类 可变长形参: **kwargs 可变长实参: **字典 函数对象 引用 当做容器类型元素 当做参数传给一个函数 当做函数的返回值 函 ...

  2. 由浅入深SCF无服务器云函数实践

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:陈杰,腾讯云架构平台部技术专家 近年来,互联网服务从一开始的物理服务器托管,虚拟机,容器,发展到现在的云函数,逐步无服务器化,如下表所示. ...

  3. python 操作mysql数据库之模拟购物系统登录及购物

    python 操作mysql数据库之模拟购物系统登录及购物,功能包含普通用户.管理员登录,查看商品.购买商品.添加商品,用户充值等. mysql 数据库shop 表结构创建如下: create TAB ...

  4. [ python ] 购物系统

    作业需求 1. 购物系统,能够注册登录,用户第一次登录后,让用户输入金额,然后打印商品列表2. 允许用户根据商品编号购买商品3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. 购买完一 ...

  5. Django之简易用户系统(3)

    目录 1. 总体设计思路 2. 搭建简易用户系统 2.1 配置模型Model 2. 2 写入数据库: 2.3 数据库验证表: 2.4 路由URL配置: 2.5 用户增加 后台执行脚本配置: 视图模板配 ...

  6. Java Web之网上购物系统(注册、登录、浏览商品、添加购物车)

    眼看就要期末了,我的专业课也迎来了第二次的期末作业---------<网上购物系统>.虽然老师的意图是在锻炼我们后台的能力,但是想着还是不利用网上的模板,准备自己写,以来别人写的静态页看不 ...

  7. 案例:我行我素购物系统 v1.1

    系统逻辑结构: import java.util.Scanner; public class ShoppingSystem { public static void main(String[] arg ...

  8. java基本打印练习《我行我素购物系统》

    public class ShoppingSystem{ public static void main(String[] args){ //System.out.println("**** ...

  9. AngularJs打造一个简易权限系统

    AngularJs打造一个简易权限系统 一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJ ...

随机推荐

  1. pat 1006 Sign In and Sign Out(25 分)

    1006 Sign In and Sign Out(25 分) At the beginning of every day, the first person who signs in the com ...

  2. poj 3281 Dining (Dinic)

    Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22572   Accepted: 10015 Descript ...

  3. 【前端vue进阶实战】:从零打造一个流程图、拓扑图项目【Nuxt.js + Element + Vuex】 (一)

    本系列教程是用Vue.js + Nuxt.js + Element + Vuex + 开源js绘图库,打造一个属于自己的在线绘图软件,最终效果:topology.le5le.com .如果你觉得好,欢 ...

  4. Ubuntu Server16.04 安装Odoo11

    odoo11采用了python3实现的. 1.sudo adduser odoo   //新建一个用户odoo 2.给odoo 用户root 权限 visudo   //使用visudo 编辑 /et ...

  5. Beta阶段贡献分配

    此作业要求参见:http://edu.cnblogs.com/campus/nenu/2019fall/homework/10006 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 刘信鹏 要 ...

  6. 第一解出的pwn题

    虽然题目不难,但是 是我第一次做出的pwn题,得写下. __int64 sub_4007E6() { char s1; // [sp+0h] [bp-30h]@1 memset(&s1, , ...

  7. IT人该如何未雨绸缪,不断提升自己的竞争力?同时尽量避免风险?

    人会慢慢变老,变老后精力,记忆力乃至身体会慢慢变差,这是无法逆转的自然规律.随之会产生的是对中年危机的忧虑乃至恐惧,比如担心能力精力不及年轻人,从而导致收入锐减乃至失业. 对此我有如下三点不解.第一, ...

  8. Stream系列(六)Match方法使用

    条件比配 视频讲解 https://www.bilibili.com/video/av77403655/ EmployeeTestCase.java package com.example.demo; ...

  9. linux hwclock

    在Linux中,系统时间(软件时间)和硬件时间,并不会自动同步,系统时间和硬件时间以异步的方式运行,互不干扰.硬件时间的运行,是靠Bios电池来维持,而系统时间,是在系统开机的时候,会自动从Bios中 ...

  10. python遍历所有盘符下的图片并拷贝下来

    最近在学习python,闲着无聊就试着写啦这个小的脚本,虽然有很多不足,但是还是收获不少. 该脚本的功能: ①遍历本地计算机中的所有盘符,并将名称记录下来: ②循环遍历盘符下的所有图片(当然这里可以根 ...