zoukankan      html  css  js  c++  java
  • 初学pyhon的几个练习小程序

    一、概述

      此程序示例为博主根据路飞学城的python的作业而写的(博主也是python初学者,仅花了99元报了路飞学城的python入门14天集中营3期网络课堂班),此程序非常适合python初学者拿来联系,下面粘贴3个示例供大家参考学习

    二、程序示例

    一、简易登陆程序

    1、需求说明

      程序启动,用户输入用户名和密码,如果输入正确,正登陆成功 

      输入的用户名不存在,则提示用户注册

      允许用户输入密码3次错误,当超过3次后,则锁定改用户。

      下次重新运行程序,如果用户被锁定,则不允许登陆

    2、相关代码

    # 用户信息格式
    # users = {'zhangsan':['张三','123','24',1],'lisi':['李四','456','24',1],'wangwu':['王五','789','24',0]}
    import pickle
    # 注册用户
    def regist():
        username = input('请填写登陆账号>>')
        pwd = input('请填写登陆密码>>')
        nickname = input('请填写昵称>>')
        age = input('请填写年龄>>')
        users[username] = [nickname,pwd,age,1]
        f = open('user.pkl','wb')
        pickle.dump(users,f)
        f.close()
        print('注册成功')
    
    # 锁定用户
    def lockUser(users,username):
        users[username][3] = 0
        f = open('user.pkl','wb')
        pickle.dump(users,f)
        f.close()
    
    # 解锁用户(暂时未用到)
    def unLockUser(username):
        fr = open('user.pkl','rb')
        users = pickle.load(fr)
        users[username][3] = 1
        fw = open('user.pkl','wb')
        pickle.dump(users,fw)
        fw.close()
    
    # ----------begin---------------------
    try:
        fi = open('user.pkl','rb')
    except FileNotFoundError:
        f = open('user.pkl','wb')
        pickle.dump({},f)
        f.close()
    
    count = 1
    flag = True
    while(True):
        if(flag):
            name = input('请输入您的用户名:')
            falg = False
        password = input('请输入您的密码:')
        f = open('user.pkl','rb')
        users = pickle.load(f)
        if(users.get(name) == None ):
            print('该用户还未被注册,是否现在注册?y/n')
            if(input() == 'y'):
                # 注册用户
                regist()
                result = input('是否立即登陆?y立即登陆;n退出')
                if(result == 'n'):
                    break
                else:
                    flag = True
            else:
                break
        elif(users.get(name)[3] == 0):
            print('该账号已经被锁定,请联系管理员进行解锁!')
            break
        elif(users.get(name)[1] != password):
            if(count == 3):
                # 锁定用户
                lockUser(users,name)
                print('密码三次输入错误,已经锁定该账号,请联系管理员进行解锁')
                break
            else:
                print('密码不正确','还有',str(3-count),'次输入的机会!')
                count += 1
                flag = False
        else:
            print('登陆成功!')
            break
    # --------------end------------------------

    二、简易购物车程序

    1、需求说明

      启动程序后让用户输入工资,然后打印商品列表

      允许用户根据商品编号来添加商品

      用户添加商品后,检测余额是否充足,如果不充足则提示,充足直接扣款

      用户可以一直购买商品,也可以随时退出,退出时打印购买的商品和余额

    2、相关代码

    goods = {'001':['优衣库裤子',499],'002':['小米手机',2499],'003':['iPhone7',4199],'004':['联想电脑',4999],'005':['智力车厘子',36],'006':['python从入门到放弃',79]}
    buyCart = []
    try:
        money = int(input('请输入您的金额:'))
    except ValueError:
        print('请输入正确的金额格式')
        exit()
    print('-----------商品列表---------------')
    print('商品编号    名称   价格')
    for item in goods:
        s = '%s    \t%s    \t%d' % (item,goods.get(item)[0],goods.get(item)[1])
        print(s)
    while(True):
        goodsNO = input('\n请选择要添加的商品编号:')
        if(goodsNO not in goods):
            print('\n选择的商品编号不存在,请重新选择!')
            continue
        if(goods.get(goodsNO)[1] > money):
            print('\n金额不足,无法添加该商品!')
        else:
            buyCart.append(goodsNO)
                s = '%s    \t%s    \t%d' % (it
            money = money - goods.get(goodsNO)[1]
            print('\n当前余额为%d' % money)
        yn = input('\n是否继续添加商品?退出输入n,继续按其他任意键:'
        if(yn) == 'n'):
            print('\n\n-------已购买的商品----------')
            print('商品编号    名称   价格')
            for item in buyCart:em,goods.get(item)[0],goods.get(item)[1])
                print(s)
            print('\n余额为:' + str(money))
            break

    三、简易多级菜单程序

    1、需求说明

      多级菜单的查看

      要求程序启动后,用户可以一次选择进入各子菜单

      可以在任意一级返回上一级

      可以在任意一级菜单退出程序

      输入‘dir’来查看当前菜单下的子菜单,输入‘cd ..’返回上一级目录,输入‘cd /’返回一级菜单,输入‘path’查看当前菜单路径,输入‘quit’来退出程序

    2、相关代码

    menu = {
        '北京':{
            '海淀':{'五道口':{'soho':{},'google':{}},'中关村':{'爱奇艺':{},'汽车之家':{}},'上地':{'百度':{},'联想':{}}},
            '昌平':{'回龙观':{'新浪':{},'网易':{}},'东小口':{'中科软':{},'中软':{}},'朱辛庄':{'智联':{},'拉钩':{}}},
            '朝阳':{'三里屯':{'太极华青':{},'北京云财':{}},'国贸':{'北京华志信':{},'北京伟业前程':{}},'望京':{'北京佰加星':{},'北京智达方通':{}}}
        },
        '上海':{
            '浦东':{'金桥':{'上海求步':{},'上海驰亚':{}},'合庆':{'中国电信':{},'上海顶通':{}}},
            '虹口':{'江湾':{'上海伦伟':{},'上海津腾':{}},'提篮桥':{'上海芒橙':{},'上海直达':{}}}
        },
        '广州':{
            '黄埔':{'板桥':{'恒大地产':{},'广州市蒲公英':{}},'官洲':{'广州动点网络':{},'广州玖维':{}}},
            '海珠':{'客村':{'广州海度':{},'广州艾秀':{}},'新港':{'广州优识':{},'广州合光':{}}}
        }
    }
    print('您可以输入‘dir’来查看当前菜单下的子菜单,输入‘cd ..’返回上一级目录,输入‘cd /’返回一级菜单,输入‘path’查看当前菜单路径,输入‘quit’来退出程序\n')
    level = 0 #当前数据项的级别,比如北京为1级
    menus = [menu] #存储当前从0-5级的各级的字典‘
    path = [] #存放当前菜单路径
    while(True):
        value = input('>>')
        if(value == 'dir'):
            print(list(menus[level]))
        elif(value == 'cd ..'): #返回上级
            if(level > 0):
                level -= 1
                menus.pop()
                path.pop()
        elif(value == 'cd /'): #返回根路径
            menus = [menu]
            level = 0
            path = []
        elif(value == 'quit'): #退出
            break
        elif(value == 'path'): #查看当前菜单路径
            paths = ''
            for item in path:
                paths = paths + '-' + item
            print(paths[1:])
        elif(value.startswith('cd ')): #进入输入的下一级菜单
            value = value[3:]
            if(value not in menus[level]):
                print('找不到当前项下的子菜单',value)
            else:
                level += 1
                menus.append(menus[level-1][value])
                path.append(value)
        else:
            print('不是查看菜单的命令')
  • 相关阅读:
    Vue2+VueRouter2+webpack 构建项目实战(一):准备工作
    vue+webpack 安装常见插件
    JS与CSS阻止元素被选中及清除选中的方法总结
    IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展(完成)
    用webpack2.0构建vue2.0超详细精简版
    从淘宝和网易的font-size思考移动端怎样使用rem?
    用CSS开启硬件加速来提高网站性能
    JS实现数组去重方法整理
    [总结]高效的jQuery代码编写技巧
    JS apply的巧妙用法以及扩展到Object.defineProperty的使用
  • 原文地址:https://www.cnblogs.com/lpob/p/8510867.html
Copyright © 2011-2022 走看看