一、需求

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实现购物小程序的更多相关文章

  1. Python编写购物小程序

    购物车要求: 用户名和密码存放于文件中 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够 ...

  2. python 的 购物小程序

    money = input('请输入您的工资:') shop = [("iphone",5800),("ipod",3000),("book" ...

  3. python学习day4--python基础--购物小程序

    '''购物小程序:用户启动时先输入工资用户启动程序后打印商品列表允许用户选择购买商品允许用户不断购买各种商品购买时检测余额是否够,如果够直接扣款,否则打印余额不足允许用户主动退出程序,退出时打印已购商 ...

  4. 【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  5. 整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  6. 利用python实现微信小程序游戏跳一跳详细教程

    利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...

  7. 京东购物小程序 | Taro3 项目分包实践

    背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面,而很多的活动在小程序开展的同时,也会在京东 APP 端进行同步的 H5 端页面的投放.这时候,一个相同的活动,需要同时开发 ...

  8. 微信小程序开发:python+sanic 实现小程序登录注册

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...

  9. Python实现微信小程序支付功能

    由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 当然具体的参数配置可以参考官 ...

随机推荐

  1. Python 起步 多版本共存配置

    上次我选择的是py2.x,如果我要再装一个py3.x呢 我们去设置环境变量,然后去命令行输入python,这里我故意把环境变量放在第一行,貌似换成3.7了 我们把2.7的放在3.7的前面呢?又换回去了 ...

  2. ResourceBundle 读取properties文件中文乱码

    1.确认properties文件是什么编码格式,并确认文件在该格式下中文是正常显示的2.读取时候,进行转一层,先用ISO-8859-1读取字节流,然后根据properties的文件格式进行new St ...

  3. IE8浏览器总是无响应或卡死崩溃怎么办

    IE8浏览器总是无响应或卡死崩溃怎么办 2016-05-11 11:22:31 来源:百度经验 作者:qq675495787 编辑:Jimmy51 我要投稿 IE在打开某些网页的时候经常崩溃或无响应, ...

  4. JavaScript 浮点数处理

    众所周知,JavaScript 浮点数运算时经常遇到会 0.000000001 和 0.999999999 这样奇怪的结果,如 0.1+0.2=0.30000000000000004.1-0.9=0. ...

  5. java 核心技术 读后总结

    总结 1.少用八进制,以及二进制. 那么就是直接用16进制或10进制吗?额,想当年有这样搞过,后面就uuid了. 2.>>>用0填充高位>>用符号位填充高位<< ...

  6. ElasticSearch多个字段分词查询高亮显示

    ElasticSearch关键字查询,将关键字分词后查询,多个字段,查询出来字段高亮显示. 查询方法如下: public List<NewsInfo> searcher2(String k ...

  7. spring batch 以游标的方式 数据库读取数据 然后写入目标数据库

    前面关于Spring Batch的文章,讲述了SpringBatch对Flat.XML等文件的读写操作,本文将和大家一起讨论Spring Batch对DB的读写操作.Spring Batch对DB数据 ...

  8. Error和Exception的区别?

    Error和Exception都继承自Throwable类 二者不同之处在于: Exception: 1.可以是可控制的(checked)或是不可控制的(unchecked) 2.表示一个有程序员编写 ...

  9. java网络编程—TCP(1)

    演示tcp的传输的客户端和服务端的互访. 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息. 客户端: 1,建立socket服务.指定要连接主机和端口. 2,获取socket流中的输出流. ...

  10. [转]c语言宏定义#define的理解与资料整理

    原文地址:http://www.cnblogs.com/haore147/p/3646934.html 1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也 ...