Python实现购物小程序
一、需求
1、登录
{
‘xxx1’:{'passwd':'123','role':1,'moeny':10000,"carts":['mac']},
'xxx1':{'passwd':'123','role':2,'moeny':10000,"carts":[]}
}
#role是1的话,代表管理员,2代表普通用户
2、普通用户:
#查看所有的商品
#输入商品名称添加到购物车,减去对应余额
#可以查看自己购物车和余额,你已经买了xx东西,你还xxx钱
#退出
3、管理员:
#添加商品,商品名称,商品价格
#充值,输入用户名,给他加钱
#退出
二、全局变量和函数定义
USER_FILE全局变量,保存用户信息
GOODS_FILE全局变量,保存商品信息
rw_file()读写文件
isprice()判断输入金额是否合法
login()用户登录:
buyer()普通用户登录:
find()查找所有商品
buy()购买商品
get()查询购物车和余额
exit()退出
admin()管理员登录:
addgoods()添加商品
recharge()充值
exit()退出
三、实现代码
USER_FILE = 'users.txt'
GOODS_FILE = 'goods.txt' def rw_file(filename, content=0): #读和写文件
if content: #若content不为空,则判定为写文件
with open(filename,'w') as f:
f.write(str(content))
else: #若content为空,则判定为读文件
with open(filename,'r') as f:
f = eval(f.read())
return f def buyer(username):
menu = {
'': find,
'': buy,
'': get,
'': exit
}
while True:
choice = input("请输入你想执行的操作(输入【1】查看所有商品,输入【2】添加商品,输入【3】查询购物车和余额,输入【4】退出): ")
if choice not in menu:
print('输入错误,请重新输入')
else:
menu[choice](username) def admin():
menu = {
'': addgoods,
'': recharge,
'': exit
} # role为1时,为管理员
while True:
choice = input('请输入你想执行的操作(输入【1】添加商品,输入【2】充值,输入【3】退出): ')
if choice not in menu:
print('输入错误,请重新输入')
else:
menu[choice]() def login(): #定义用户登录函数,根据用户角色提供指定操作
users = rw_file(USER_FILE)
for i in range(3):
username = input("请输入账号: ")
passwd = input("请输入密码: ")
if username in users and passwd == users[username]['passwd'] :
if users[username]['role'] == '': #如果role为2,则为普通用户
print('欢迎光临')
buyer(username)
else:
print('您已管理员身份登录')
admin( )
else:
print('账号或密码错误,还能尝试%d次'%(2-i))
i += 1 def find(*args): #普通查看所有商品
with open('goods.txt') as f:
print('所有商品和价格列表: ', f.read()) def buy(username): #普通用户添加商品到购物车
users = rw_file(USER_FILE)
goods_all = rw_file(GOODS_FILE)
goods = input('请输入你要添加的商品: ')
if goods in goods_all:
if goods not in users[username]['carts']:
if users[username]['money'] >= goods_all[goods]:
users[username]['carts'].append(goods)
users[username]['money'] =float('%.2f'%(users[username]['money'] - goods_all[goods]))
with open('users.txt','w') as f2:
f2.write(str(users))
print('商品已成功添加到购物车')
else:
print('您的余额不足,请充值')
else:
print('购物车中已添加该商品,无需重复添加')
else:
print('您输入的商品不存在') def get(username): #普通用户查询购物车中的商品和余额
users = rw_file(USER_FILE)
if len(users[username]['carts']) > 0:
print('您的购物车中已有商品:{goods}'.format(goods = users[username]['carts']))
else:
print('您还未添加任何商品')
print('您的余额:{money}'.format(money=users[username]['money'])) def addgoods( ): #管理员添加商品
goods_all = rw_file(GOODS_FILE)
goods_name = input('请输入商品名称: ')
goods_price = input('请输入商品价格: ')
if len(goods_name.strip()) != 0:
if goods_name not in goods_all:
if isprice(goods_price):
goods_all[goods_name] = float('%.2f'%float(goods_price))
rw_file(GOODS_FILE,goods_all)
print('商品添加成功')
else:
print('商品价格必须是正数,请重新输入')
else:
print('该商品已存在,无需重复添加')
else:
print('商品名称不能为空,请重新输入') def recharge(): #管理员给指定账号充值
users = rw_file(USER_FILE)
username = input('请输入要充值的账号: ')
money = input('请输入要添加的金额: ')
if username in users and isprice(money):
users[username]['money'] = float('%.2f'%(users[username]['money'] + float(money)))
rw_file(USER_FILE, users)
print('操作成功')
else:
print('输入账号或金额有误,请重新输入') def isprice(price): #判断金额是否有效
if price.count('.') == 1 and price.split('.')[0].isdigit() and price.split('.')[1].isdigit():
return True
elif price.count('.') == 0 and price.isdigit():
return True
else:
return False login()
Python实现购物小程序的更多相关文章
- Python编写购物小程序
购物车要求: 用户名和密码存放于文件中 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够 ...
- python 的 购物小程序
money = input('请输入您的工资:') shop = [("iphone",5800),("ipod",3000),("book" ...
- python学习day4--python基础--购物小程序
'''购物小程序:用户启动时先输入工资用户启动程序后打印商品列表允许用户选择购买商品允许用户不断购买各种商品购买时检测余额是否够,如果够直接扣款,否则打印余额不足允许用户主动退出程序,退出时打印已购商 ...
- 【Python精华】100个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...
- 整理了适合新手的20个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...
- 利用python实现微信小程序游戏跳一跳详细教程
利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...
- 京东购物小程序 | Taro3 项目分包实践
背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面,而很多的活动在小程序开展的同时,也会在京东 APP 端进行同步的 H5 端页面的投放.这时候,一个相同的活动,需要同时开发 ...
- 微信小程序开发:python+sanic 实现小程序登录注册
开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...
- Python实现微信小程序支付功能
由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 当然具体的参数配置可以参考官 ...
随机推荐
- HTML常用标签与CSS基础知识
一.HTML页面结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- ubuntu命令错误集
1.在ubuntu命令行使用rz从windows传输文件时出现乱码 解决方法:使用 rz -e 选项进行传输,一般小文件传输不用加 -e 选项,大文件传输需要.
- emmet高级技巧
编写好HTML和CSS代码时,我们也需要修改或添加一些内容,Emmet提供了很多非常独特的工具,可以大大提高编辑体验,下面我们挑选几个常用的功能来介绍. 萨龙龙发现在sublime text中安装的E ...
- 总结工作中用到的ES6语法,方便工作中查看,也总结一下经验
1.模板字符串: 表现形式:${} 举例子: import axios from 'axios'; let base = 'https://www.baidu.com/home/msg/data/pe ...
- P1977 出租车拼车(DP)
题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...
- Java定时任务的几种实现方式
java Timer比较具体的实现实例 https://www.cnblogs.com/0201zcr/p/4703061.html 转载大神 的 https://blog.csdn.net/kegu ...
- P1868 饥饿的奶牛
题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你可以选择任意区间但不能有 ...
- ElasticSearch2.2.0安装(win7)
ElasticSearch2.2.0必须在jdk1.7上才可以启动起来哦. 一.ElasticSearch2.2.0安装 1.下载ElasticSearch2.2.0安装包 https://downl ...
- 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )(转载)
本文转自http://www.cnblogs.com/zery/p/3315889.html 对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本 ...
- 从零开始的全栈工程师——js篇2.11(原型)
原型 原型分析 1.每个 函数数据类型(普通函数,类)都有一个prototype属性 并且这个属性是一个对象数据类型2.每个Prototype上都有一个constructor属性 并且这个属性值是当前 ...