python3 从零单排3_函数(购买商品小程序)

34人阅读 评论(0) 收藏 举报
分类:

题目如下:
商品文件products.txt里存的内容如下:
{'mac': 6500, '被子': 100.0, '手机': 1.0, '宝马': 100}
用户文件user.txt里存的内容如下:
{'dalei': {'money': 1003.0, 'role': 2, 'pass': '123456', 'products': ['mac']},'xg': {'money': 1000, 'role': 1, 'pass': '123456', 'products': ['mac']}}
  管理员可以操作:
1.给用户充值,输入用户名,修改money,100000
2.添加商品
3.logout
  普通用户可以操作:
1.看商品信息
2.买东西,a.东西加products,money要修改
3.查看自己的商品和余额
4.退出

  需求分析:
1.商品、用户文件 初始化数据
2.登录 读取用户文件
3.登录获取角色,给出相应菜单 字典获取用户角色,定义字典 给用户选择相应的操作
4.管理员
  1.给用户充值,输入用户名,修改money,100000
  2.添加商品
  3.logout
5.用户
  1.看商品信息
  2.买东西,a.东西加products,money要修改
  3.查看自己的商品和余额
  4.退出

  代码如下:

复制代码
复制代码
#定义读写文件
def op_file(filename,content=None):
    if content:
        with open(filename,'w',encoding='utf-8') as f:
            f.write(str(content))
    else:
        with open(filename,'r',encoding='utf-8') as f:
            res=eval(f.read())
            return res
        
#定义校验money的输入合法性
def checkmoney(money):
    if money.isdigit():
        return True
    elif money.count('.')==1:
        if money.split('.')[0].isdigit() and money.split('.')[1].isdigit():
            return True
    return False
#定义登录
def login():
    username=input('用户名:')
    password=input('密码:')
    users=op_file('user.txt')
    if username in users and users[username]['pass']==password:
        print('欢迎【%s】登录'%username)
        return username,users[username]['role']
    else:
        print('登录失败!')
#管理员
#1.给用户充值,输入用户名,修改money,100000
def charge():
    username = input('用户名:').strip()
    money = input('金额:').strip()
    users = op_file('user.txt')
    if username in users and checkmoney(money):
        users[username]['money']+=float(money)
        op_file('user.txt',content=users)
# 2.添加商品
def add():
    sp_name = input('商品名称:').strip()
    sp_money = input('金额:').strip()
    sp = op_file('products.txt')
    if checkmoney(sp_money):
        sp[sp_name]=float(sp_money)
        op_file('products.txt', content=sp)

# 3.logout
def logout():
    exit('退出程序')

#5.用户
# 1.看商品信息
def show():
    sp = op_file('products.txt')
    for i in sp:
        print('商品:%s,价钱:%s'%(i,sp[i]))

# 2.买东西,a.东西加products,money要修改
def buy(user):
    pro=input('买的商品migncheng:')
    sp = op_file('products.txt')
    users = op_file('user.txt')
    if pro in sp:
        if users[user]['money']>=sp[pro]:
            users[user]['money'] -= sp[pro]
            users[user]['products'].append(pro)
            op_file('user.txt', content=users)
        else:
            print('请联系管理员充值!')
    else:
        print('商品未上架!')
        buy(user)

# 3.查看自己的商品和余额
def look(user):
    users = op_file('user.txt')
    print('您的购物车有:%s'%str(users[user]['products']))
    print('您余额为:%.2f'%users[user]['money'])

choice_admin={'1':charge,'2':add,'3':logout}
choice_user={'1':show,'2':buy,'3':look,'4':logout}

def run():
    user,role=login()
    if role==1:
        while True:
            choice=input('请输入您的选择:1.充值;2.添加商品;3.退出')
            if choice=='1' or choice=='2' or choice=='3':
                choice_admin[choice]()
            else:
                print('输入有误!')
    else:
        while True:
            choice=input('请输入您的选择:1.查看商品;2.购买;3.查询购物车和余额;4.退出')
            if choice=='1' or choice=='4':
                choice_user[choice]()
            elif choice=='2' or choice=='3':
                choice_user[choice](user)
            else:
                print('输入有误!')
                
if __name__=='__main__':
    run()
查看评论

Python3 从零单排3_函数

函数也叫方法,比如你用手机打电话就是一个函数,你只管用就好,里面的功能别人已经帮你研发好了,你只需要输入手机号,按下拨打就好了,这个概念用在代码里尤为重要,比如重复某个功能,比如用户输入,你要判断用户...
  • qq_29699799
  • qq_29699799
  • 2018-04-15 11:58:59
  • 9

从零单排SpringMVC——SpringMVC项目搭建

本文使用intellij idea构建springMVC项目。新建项目file-new-project,选择maven项目进行管理 填写相关信息后,一路到finish。具体的操作网上相关介绍很多...
  • u014730658
  • u014730658
  • 2017-09-24 19:38:46
  • 61

[微信小程序]商城之购买商品数量实现

这里有三种变更数量的方式, 加号,减号,input输入 , 这里做了限制,数量不能小于等于0并且不能超过现有库存,下面是功能实现代码。 如果有不懂的,可以加入微信小程序开发交流qq群(1736838...
  • qq_35713752
  • qq_35713752
  • 2017-12-22 15:22:24
  • 1089

从零单排《机器学习实战》(一):k-近邻算法

运行平台:WindowsPython版本: Python3.5IDE:PyCharm 首先感谢Jack-Cui博主的分享(/c406495762),让我从零单排...
  • banzhuan133
  • banzhuan133
  • 2018-03-12 11:18:03
  • 54

从零单排c++ primer(11)

(1)无序关联容器使用哈希函数。 (2)在某些应用中,维护元素的序的代价非常高昂,此时无序容器也很有用。 (3)无序容器的性能依赖于哈希函数的质量和桶的数量和大小。 (4)无序容器在存储上组织为...
  • u012269327
  • u012269327
  • 2014-04-23 09:13:04
  • 805

一个控制台的收银柜台收款程序。根据商品单价、购买数量以及收款金额计算并输出应收金额和找零的小程序。

一个控制台的收银柜台收款程序。根据商品单价、购买数量以及收款金额计算并输出应收金额和找零的小程序。...
  • u013385368
  • u013385368
  • 2014-11-07 08:51:37
  • 2805

微信小程序实战篇-商品详情页(一)

哈喽,大家好,今天要进入新篇章啦,商品详情页,这个可是个大模块,要分好几次才能讲解清楚,现在我们先进行第一讲,老规矩,先上效果图有木有很酷炫啊,下面由代码君教你如何实现。详情页布局看效果图,可以知道详...
  • u012927188
  • u012927188
  • 2017-06-30 16:24:59
  • 11623

简单的购物数量的HTML小程序

购物数量小程序 function sub() { var a = buy.ans.value; ...
  • qingshui23
  • qingshui23
  • 2016-06-16 14:48:25
  • 1271

微信小程序 商品详情页弹窗

<view class="goods-detail-chooseCategory-title" catchtap="normal" d...
  • XiFangzheng
  • XiFangzheng
  • 2018-03-01 18:51:20
  • 330

Unity3D游戏开发从零单排(一) - 真机运行(钱柜娱乐开户和WindowsPhone)

周末不想学习,就来玩一玩Unity3D好了。         本以为网上会有很多关于Unity3D的配置文章,但搜到的要么是iOS的,要么比较 坑爹,所以还是自己来写一篇。          环境:W...
  • qp120291570
  • qp120291570
  • 2013-08-19 21:53:12
  • 7401
    个人资料
    等级:
    访问量: 0
    积分: 12
    排名: 0
    文章存档