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.支付交互流程 当然具体的参数配置可以参考官 ...
随机推荐
- bzoj3720: Gty的妹子树(树分块)
传送门 好珂怕…… 树分块是什么东西啊……感觉好暴力…… 直接贴一下好了->这里 //minamoto #include<iostream> #include<cstdio&g ...
- Window安装配置Redis
一.下载windows版本的Redis github下载地址:https://github.com/MSOpenTech/redis/tags 二.安装启动Redis Redis 支持 32 位和 6 ...
- vue seo管理 vue-meta-info
vue-meta-info: 安装: npm install vue-meta-info --save 全局引入vue-meta-info,在main.js ...
- CF446B DZY Loves Modification 优先队列
As we know, DZY loves playing games. One day DZY decided to play with a n × m matrix. To be more pre ...
- Java基础笔记(七)—— 成员变量、静态变量、局部变量
public class Test { int c; //成员变量(实例变量) static int s1; //静态变量(类变量)(全局变量) public static void main(Str ...
- Xml2Object
<dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream ...
- 设计模式——工厂方法(Factory Method)
定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. ——DP UML类图 模式说明 抽象业务基类 实际业务类的公共基类,也是工厂要创建的所有对象的父类,这部分 ...
- hide(),show()
var newstypevalue =$("#newstype option:selected").val(); if(newstypevalue=='0'){ ...
- Spring事务管理的xml方式
一个业务的成功: 调用的service是执行成功的,意味着service中调用的所有的dao是执行成功的. 事务应该在Service层统一控制. 如果手动去实现,则需要对dao进行代理,在方法前后进 ...
- Entity Framework小知识
记录在使用EF中使用的技巧,以备查阅. 1.当需要查询一个列总和的时候,如果列是允许NULL或者未查到信息的时候,想要返回的是0 而非NULL时 db.表名.Sum(p=> (decimal?) ...