Python函数基础实战之购物车系统
一、Python函数基础实战之购物车系统
- 用户管理:注册(简单追加方式写入文件)、登录(限制3次尝试机会)、注销
- 购物功能:浏览商品、添加商品到购物车、查看购物车
- 数据存储:用户信息存储在文本文件中
username_list = [] # 存储当前登录用户
prize_dict = {
'0': "芭比娃娃",
'1': "变形金刚",
'2': "psp游戏机",
'3': "奥特曼",
'4': "遥控飞机",
'5': "chongqiwawa",
}
shopping_cart_dict = {} # 购物车
# 用户交互输入信息
def inp_username_pwd():
username_inp = input("请输入用户名:")
pwd_inp = input("请输入你的密码:")
return username_inp, pwd_inp
def login():
print('欢迎来到登录功能!')
if username_list:
print('已经登录,请勿重复登录!')
return # 提前退出,不执行后续登录逻辑
count = 0
while count < 3:
username_inp, pwd_inp = inp_username_pwd()
with open('D:\\user_info.txt', 'r', encoding='utf8') as f:
for user_info in f:
user_info = user_info.strip()
username, pwd = user_info.split(':')
if username == username_inp and pwd == pwd_inp:
print('登录成功')
username_list.append(username_inp)
return
else:
print('账号密码错误!')
count += 1
def register():
print('欢迎来到注册功能!')
username_inp, pwd_inp = inp_username_pwd()
with open('D:\\user_info.txt', 'a', encoding='utf8') as fa:
fa.write(f'{username_inp}:{pwd_inp}\n')
def logout():
print('欢迎来到注销功能!')
if not username_list:
print('请登录之后注销!')
return
username_list.clear()
def shopping():
print('欢迎来到消费功能!')
if not username_list:
print('请登录后使用该功能')
return
print('''
0 芭比娃娃
1 变形金刚
2 psp游戏机
3 奥特曼
4 遥控飞机
5 chongqiwawa
''')
while True:
prize_choice = input('请输入需要购买商品编号:')
# 验证:检查是否为数字,且数字是否在有效范围
if not prize_choice.isdigit() or prize_choice not in prize_dict:
print("请输入有效的数字编号!")
continue
break # 所有验证通过,退出循环
prize_name = prize_dict[prize_choice]
if prize_name in shopping_cart_dict:
shopping_cart_dict[prize_name] += 1
else:
shopping_cart_dict[prize_name] = 1
print(f'消费成功{prize_name},当前购物车情况为{shopping_cart_dict}')
def shopping_cart():
print('恭喜剁手成功!')
if not username_list:
print('请登录后使用该功能')
return
print(f'恭喜购物成功:{shopping_cart_dict}')
shopping_cart_dict.clear()
func_dict = {
'1': login,
'2': register,
'3': logout,
'4': shopping,
'5': shopping_cart,
}
while True:
print('''
1 登录
2 注册
3 注销
4 购物
5 购物车
q 退出
''')
func_choice = input('请选择你要选择的功能(输入q退出):')
if func_choice == 'q':
break
if func_choice not in func_dict:
print('长眼睛没,看不懂数字?')
continue
func_dict[func_choice]()
Python函数基础实战之购物车系统的更多相关文章
- 《转》Python学习(17)-python函数基础部分
http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...
- 10分钟学会Python函数基础知识
看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...
- Python 函数基础、有序集合、文件操作(三)
一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...
- python函数基础学习
函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定 义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...
- Python函数基础和函数参数
函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...
- 函数基础实战之ATM和购物车系统
username_list = [] prize_dict = { '0': "芭比娃娃", '1': "变形金刚", '2': "psp游戏机&qu ...
- python函数基础
一.基础 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 #如果函数执行完毕也没有return语句时,自动return None. 空函数 如果想定义一个什么事也不做的空函数,可 ...
- python 函数基础介绍
函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...
- 4.python函数基础
一.函数 1.函数简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...
- python函数基础(3)
第1章 编码补充 1.1 字符编码对照表 1.2 编码特性 1.4 encode/decode第2章 集合 2.1 特点 2.2 [重点]作用:去重 2.3 常用操作 2.3.1 删除 2.3.2 交 ...
随机推荐
- React-Native开发鸿蒙NEXT-本地与沙盒加载bundle
React-Native开发鸿蒙NEXT-本地与沙盒加载bundle 来晚了来晚了,不是想偷懒,实在是一个图片问题没搞定导致效果出不来,今天刚靠工具查出了原因. RN的加载无非本地加载与沙盒加载两种方 ...
- 自己做的linux动态壁纸软件
自己做的linux动态壁纸软件 https://github.com/dependon/fantascene-dynamic-wallpaper
- Vue前端开发 转 React 指南
JSX 先介绍 React 唯一的一个语法糖:JSX. 理解 JSX 语法并不困难,简单记住一句话,遇到 {} 符号内部解析为 JS 代码,遇到成对的 <> 符号内部解析为 HTML 代码 ...
- HDFS常用命令操作
HDFS常用操作命令如下: 查询目录 # 查看/目录下的目录和文件 hadoop fs -ls / # 递归查看/目录下的目录和文件 hadoop fs -lsr / 创建目录 # 新增目录/user ...
- wso2~api生命周期与关联事件
api生命周期 CREATED 建立 PRE-RELEASED 预发布 PUBLISHED 发布 DEPRECATED 删除 BLOCKED 冻结 RETIRED 退役 状态为Published的ap ...
- 实战绕过某waf后缀检测内容检测
本次测试为授权测试. 0x01 背景 弱口令进入某后台,存在任意文件上传,存在waf 测试aa后缀成功上传通过查看派单可以看到文件路径 直接上传aspx被拦截 0x02 绕过后缀名检测 先简单尝试大小 ...
- VisualStudioCode 创建Vue 3.0 项目
https://vitejs.cn/guide/#%E6%90%AD%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AA-vite-%E9%A1%B9%E7%9B%AE第一步npm ...
- CF1227G Not Same 题解
CF1227G Not Same 构造.考虑按照每个数字进行考虑,每次填充一列. 观察样例 \(1\),不难发现可以构造使每一行或列一定有一个位置为 \(0\).我们不妨对于每一列限定这个 \(0\) ...
- vs 编译成库 有的时候会出现奇怪的问题 解决方案
解决方案: 把相关库的代码全部加入到建立的vs项目中.
- 生成 cone(锥体)
简介 生成 圆锥 代码 // CreateCone.cpp: 定义控制台应用程序的入口点. // #include <iostream> #include <OpenMesh/Cor ...