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 ...
随机推荐
- [高效工作软件] Capslock+的使用笔记 (快捷键)
1.下载https://cjkis.me/capslock+/#%E4%B8%8B%E8%BD%BD,双击即可安装,中文路径也可: 2.这个软件的代码开源了的,以后java学成之后,可以去看看源码: ...
- centos7 openssh 7.9.1 升级
由于项目构建时间比较长,近期安全检查发现openssh有漏洞.所以要升级openssh到7.9p1版本.由于ssh用于远程连接,所以要谨慎操作. 1. 依赖安装 OpenSSL版本:目前OpenSSH ...
- 力扣(LeetCode)计数质数 个人题解
统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 一般方法,也就是一般人都会用的,将数从2到它本 ...
- PHP字符逃逸导致的对象注入
1.漏洞产生原因: 序列化的字符串在经过过滤函数不正确的处理而导致对象注入,目前看到都是因为过滤函数放在了serialize函数之后,要是放在序列化之前应该就不会产生这个问题 ?php functio ...
- 【目标检测实战】目标检测实战之一--手把手教你LMDB格式数据集制作!
文章目录 1 目标检测简介 2 lmdb数据制作 2.1 VOC数据制作 2.2 lmdb文件生成 lmdb格式的数据是在使用caffe进行目标检测或分类时,使用的一种数据格式.这里我主要以目标检测为 ...
- 关于Java 值传递深度分析
首先说观点:java只有值传递没有引用传递 然后再来看看值传递与引用传递两者的定义 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改, ...
- LXC容器文件系统设计优化
在HOST上面,一个LXC container包含一个config文件和一个rootfs目录. 早期我们在交叉编译系统上编译出container的rootfs之后,直接在编译系统上将其用tar压缩打包 ...
- C语言与汇编语言混合编程实验
混合编程方法: 模块链接法 汇编指令嵌入法 1: 模块链接法则 模块链接法是指分别用汇编语言和C语言实现独立的模块(或子程序),再用链接程序把各模块生成的obj文件连接成一个可执行程序. 1:C语言调 ...
- JavaScript笔记七
1.函数 - 返回值,就是函数执行的结果. - 使用return 来设置函数的返回值. - 语法:return 值; - 该值就会成为函数的返回值,可以通过一个变量来接收返回值 - return后边的 ...
- 2、Docker 基础安装和基础使用 一
基础环境 本次环境使用Centos 7.x版本系统,最小化安装,系统基础优化配置请查看 Centos 7.x 系统基础优化 安装 使用命令:yum install docker-io -y [root ...