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.支付交互流程 当然具体的参数配置可以参考官 ...
随机推荐
- 20165224 陆艺杰 Exp 8 Web基础
.基础问题回答 (1)什么是表单 html的一个控件 表单在网页中主要负责数据采集功能 (2)浏览器可以解析运行什么语言 html xml jsp php python 等 (3)WebServer支 ...
- 025 Reverse Nodes in k-Group 每k个一组翻转链表
给出一个链表,一次翻转 k 个指针节点,并返回修改后的链表.k 是一个正整数,并且小于等于链表的长度.如果指针节点的数量不是 k 的整数倍,那么最后剩余的节点应当保持原来的样子.你不应该改变节点的值, ...
- 021 Merge Two Sorted Lists 合并两个有序链表
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- 记录一个在线压缩和还原压缩js代码的工具
packer – javascript 压缩工具 http://dean.edwards.name/packer/ Javascript Beautifier ---可以恢复某些压缩工具压缩的js代码 ...
- B - Reverse and Compare 小小思维题
http://agc019.contest.atcoder.jp/tasks/agc019_b 一开始的做法是, 用总数减去回文子串数目,因为回文子串怎么翻转都不影响答案. 然后,如果翻转afucka ...
- Java文件与io——装饰者模式
意图: 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比于生成子类更为灵活.该模式以对客户端透明的方式扩展对象的功能. 适用环境 在不影响其他对象的情况下,以动态.透明的 ...
- Entity framework 7通过代码添加外键关系的方法
这几天研究Asp.net5,也试着写了一些示例代码,因为网上的资料实在是太少了,所以在此把一些问题的解决方法记录下来,以备后查. 问题: 在EF7中,假如数据库已经存在,并且两个表具有外键关系,但是实 ...
- js 数组操作常用方法
push():在数组后面加入元素,并返回数组的长度: unshift():在数组前面就如元素,并返回数组的长度: pop():删除最后一个元素: var arr =[1,2,3,4,5] ; arr. ...
- 获取hudson持续构建编译结果的一种方法
作者:朱金灿 来源:http://blog.csdn.net/clever101 很多时候使用hudson结合VisualStudio进行持续构建后需要获取持续构建的编译结果,通过编译结果来知道哪些项 ...
- tas5717/5719功放问题点总结
问题一 AMP output channel invert problem and modification 原因:如果硬件设计时,耳机或者喇叭的输出通道反了,就要对其进行左右对换. 对策:如果通道反 ...