Python3 函数实践之简易购物系统
函数实践之简易购物系统
项目主要需求:
用户可以自行选择功能
该购物系统具有
注册/登录/购物/购物车/退出登录功能用户在登录后才能使用
购物/购物车/退出登录功能
'''
注册
登录
购物
购物车
退出登录
'''
username_list = []
goods_dict = {
'1': '马云',
'2': '马化腾',
'3': '马冬梅'
}
shopping_cart_dict = {}
def register():
'''注册'''
print('*' * 20, '注册', '*' * 20)
while True:
username_inp = input('请输入用户名: ')
pwd_inp = input('请输入密码: ')
re_pwd_inp = input('再次输入密码以确认: ')
if pwd_inp == re_pwd_inp:
with open('user_info', 'a', encoding='utf-8') as fa:
fa.write(f'{username_inp}:{pwd_inp}\n')
print('注册成功')
break
else:
print('两次密码输入不一致')
def login():
'''登录'''
print('*' * 20, '登录', '*' * 20)
count = 0
while count < 3:
if username_list:
print('你已登录')
break
username_inp = input('请输入用户名: ')
pwd_inp = input('请输入密码: ')
with open('user_info', 'r', encoding='utf-8') as fr:
for user_info in fr:
user_info = user_info.strip()
username, pwd = user_info.split(':')
if username_inp == username and pwd == pwd_inp:
print('登录成功')
username_list.append(username_inp)
count = 3
break
else:
print('用户名或密码错误')
count += 1
def shopping():
'''购物'''
print('*' * 20, '购物', '*' * 20)
while True:
if not username_list:
print('请先登录')
break
print('''
1 马云
2 马化腾
3 马冬梅
''')
choice = input('请输入你要购买的商品编号,其他任意内容回到主菜单: ')
if choice not in ['1', '2', '3']:
break
# 判断选择商品在购物车中是否存在. 已经存在: 数量加1; 不存在: 数量为1
goods_name = goods_dict[choice]
if goods_name in shopping_cart_dict:
shopping_cart_dict[goods_name] += 1
else:
shopping_cart_dict[goods_name] = 1
print(f'已添加至购物车, 当前购物车商品为:\n{goods_dict}')
def shopping_cart():
'''购物车'''
if not username_list:
print('请先登录')
return
print('*' * 20, '购物车', '*' * 20)
if shopping_cart_dict == {}:
print('购物车为空,请先挑选商品')
return
print(f'当前购物车商品有:{shopping_cart_dict}')
buy_choice = input('确认购买请输入Y,其他任意内容回到主菜单: ')
if buy_choice not in ['Y', 'y']:
func()
shopping_cart_dict.clear()
print('购买成功!')
def logout():
'''退出登录'''
if not username_list:
print('请先登录')
return
choice = input('确认退出登录请输入Y,其他任意内容回到主菜单: ')
if choice not in ['Y', 'y']:
return
username_list.clear()
print('已退出登录')
func_dict = {
'1': register,
'2': login,
'3': shopping,
'4': shopping_cart,
'5': logout
}
def func():
'''功能菜单'''
while True:
print('''
1 : 注册
2 : 登录
3 : 购物
4 : 购物车
5 : 退出登录
''')
choice = input('请输入编号选择功能,其他任意内容退出程序: ')
if choice not in func_dict:
break
func_dict[choice]() # 使用函数对象调用函数
func()
Python3 函数实践之简易购物系统的更多相关文章
- Python3 函数基础2
目录 可变长参数 可变长形参: *args 可变长实参: *容器类 可变长形参: **kwargs 可变长实参: **字典 函数对象 引用 当做容器类型元素 当做参数传给一个函数 当做函数的返回值 函 ...
- 由浅入深SCF无服务器云函数实践
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:陈杰,腾讯云架构平台部技术专家 近年来,互联网服务从一开始的物理服务器托管,虚拟机,容器,发展到现在的云函数,逐步无服务器化,如下表所示. ...
- python 操作mysql数据库之模拟购物系统登录及购物
python 操作mysql数据库之模拟购物系统登录及购物,功能包含普通用户.管理员登录,查看商品.购买商品.添加商品,用户充值等. mysql 数据库shop 表结构创建如下: create TAB ...
- [ python ] 购物系统
作业需求 1. 购物系统,能够注册登录,用户第一次登录后,让用户输入金额,然后打印商品列表2. 允许用户根据商品编号购买商品3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. 购买完一 ...
- Django之简易用户系统(3)
目录 1. 总体设计思路 2. 搭建简易用户系统 2.1 配置模型Model 2. 2 写入数据库: 2.3 数据库验证表: 2.4 路由URL配置: 2.5 用户增加 后台执行脚本配置: 视图模板配 ...
- Java Web之网上购物系统(注册、登录、浏览商品、添加购物车)
眼看就要期末了,我的专业课也迎来了第二次的期末作业---------<网上购物系统>.虽然老师的意图是在锻炼我们后台的能力,但是想着还是不利用网上的模板,准备自己写,以来别人写的静态页看不 ...
- 案例:我行我素购物系统 v1.1
系统逻辑结构: import java.util.Scanner; public class ShoppingSystem { public static void main(String[] arg ...
- java基本打印练习《我行我素购物系统》
public class ShoppingSystem{ public static void main(String[] args){ //System.out.println("**** ...
- AngularJs打造一个简易权限系统
AngularJs打造一个简易权限系统 一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJ ...
随机推荐
- [LC]26题 Remove Duplicates from Sorted Array (删除排序数组中的重复项)(双指针法)(原地实现)
①中文题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- nyoj 27-水池数目(BFS, DFS)
27-水池数目 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 南阳理工学院校园里有一些小河和一些湖泊,现在,我 ...
- Bootstrap——面包屑导航(Breadcrumbs)
面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式. Bootstrap 中的面包屑导航(Breadcrumbs)是一个简单的带有 .breadcrumb 类的无序列表. <o ...
- 【algo&ds】7.最短路径问题
单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径 (有向)无权图:BFS (有向)有权图:Dijkstra算法 多源最短路径问题:求任意两顶点间的最短路径 直接将单源最短路算法调用|V ...
- [springboot 开发单体web shop] 8. 商品详情&评价展示
上文回顾 上节 我们实现了根据搜索关键词查询商品列表和根据商品分类查询,并且使用到了mybatis-pagehelper插件,讲解了如何使用插件来帮助我们快速实现分页数据查询.本文我们将继续开发商品详 ...
- ubuntu server 1604 设置笔记本盒盖 不操作
sudo vim /etc/systemd/logind.conf //打开配置文件 找到 #HandleLidSwitch=suspend 改为 HandleLidSwitch=ignore ...
- [apue] 神奇的 Solaris pipe
说到 pipe 大家可能都不陌生,经典的pipe调用配合fork进行父子进程通讯,简直就是Unix程序的标配. 然而Solaris上的pipe却和Solaris一样是个奇葩(虽然Solaris前途黯淡 ...
- sku二维数组里的数组从头到尾叠加组合
今天工作之余与同事聊天,要是实现一个sku描述里的字段组合的问题.并且实现了请吃饭.哈哈.一顿饭,我和另一位同事积极杠杆的.后来实现了出来. let skuList = [ ['黑色', '白色',' ...
- Matlab生成Word--xdd
摘自<MATLAB统计分析与应用:40个案例分析>(谢中华老师著)P452页function CreatWord %利用Matlab生成word filespec_user = [pwd ...
- day 13 生成器函数 表达式 推导式
今日主要内容 1. 生成器和生成器函数 生成器的本质就是迭代器 生成器的三种创建办法: 1.通过生成器函数 2.通过生成器表达式创建生成器 3.通过数据转换 2. 生成器函数: 函数中包含了yield ...