• day2


    三级菜单:
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    #user:Felix
    #date:2016-10-19
    #mail:wudonghang@wudonghang.com
    #If you have questions or suggestions, please contact the author.
    china_map ={
    "华南":{
    "广东":["广州市","佛山市","深圳市","东莞市"],
    "广西":["南宁市","柳州市","桂林市","北海市"],
    "海南":["海口市","三亚市","三沙市","儋州市"]
    },
    "华东":{
    "上海":["黄浦区","卢湾区","徐汇区","长宁区","普陀区"],
    "安徽":["合肥市","芜湖市","淮南市","马鞍山市"],
    "江苏":["南京市","无锡市","徐州市","常州市","苏州市"]
    },
    "华北":{
    "北京":["东城区","西城区","朝阳区","丰台区","石景山区","海淀区"],
    "山西":["太原市","大同市","阳泉市","长治市"],
    "河北":["石家庄市","唐山市","秦皇岛市","邢台市"]
    },
    "华中":{
    "湖北":["武汉市","黄石市","十堰市","十堰市"],
    "河南":["郑州市","开封市","洛阳市","平顶山市"],
    "湖南":["长沙市","株洲市","衡阳市","邵阳市"]
    },
    "西南":{
    "重庆":["万州区","涪陵区","渝中区","大渡口区"],
    "四川":["成都市","自贡市","攀枝花市","德阳市"],
    "贵州":["贵阳市","六盘水市","遵义市","安顺市"],
    },
    "特别行政区":{
    "香港":["屯门","弯仔","北角","西贡"],
    "澳门":["花地玛堂区","圣安多尼堂区","大堂区","望德堂区"],
    },
    }
    print("".center(50,"-"))
    print("+ +".center(50))
    print("+ +".center(50))
    print("+ 中华人民共和国查询系统 +".center(40))
    print("+ +".center(50))
    print("+ +".center(50))
    print("".center(50,"-"))
    print("大中华地区一级划分:")
    while True:
    for i in china_map:
    print(i)
    print("".center(50,"-"))
    greater_china_name = input("请输入你要查看的中华地区名字 or 按q:Exit是退出整个程序:")
    if greater_china_name in china_map:
    gc_name = china_map[greater_china_name]
    province_name = gc_name.keys()
    while True:
    print("------------------包含的省名字二级:-----------------")
    for i in province_name:
    print(i)
    print("".center(50,"-"))
    sheng_name_input = input("请输入你要查看的省名字 or 按b:Back是返回上一级菜单;按q:Exit是退出整个程序:")
    if sheng_name_input in province_name:
    shi_name = china_map[greater_china_name][sheng_name_input]
    print("--------------包含的城市名三级:-------------------")
    for i in shi_name:
    print(i)
    else:
    print("".center(50,"-"))
    shi_name_input = input("按b:Back是返回上一级菜单;按q:Exit是退出整个程序:")
    if shi_name_input == "b":
    continue
    elif shi_name_input == "q":
    exit("退出中华人民共和国查询系统".center(50,"-"))
    else:
    print("输入的指令不对请重新输入!")
    elif sheng_name_input == "b":
    break
    elif sheng_name_input == "q":
    exit("退出中华人民共和国查询系统".center(50,"-"))
    else:
    print("输入的省名字不对请重新输入!")
    elif greater_china_name == "q":
    exit("退出中华人民共和国查询系统".center(50,"-"))
    else:
    print("输入的地区名字不对请重新输入!")
    三级菜单文艺青年版
    menu = {
    '北京':{
    '海淀':{
    '五道口':{
    'soho':{},
    '网易':{},
    'google':{}
    },
    '中关村':{
    '爱奇艺':{},
    '汽车之家':{},
    'youku':{},
    },
    '上地':{
    '百度':{},
    },
    },
    '昌平':{
    '沙河':{
    '老男孩':{},
    '北航':{},
    },
    '天通苑':{},
    '回龙观':{},
    },
    '朝阳':{},
    '东城':{},
    },
    '上海':{
    '闵行':{
    "人民广场":{
    '炸鸡店':{}
    }
    },
    '闸北':{
    '火车战':{
    '携程':{}
    }
    },
    '浦东':{},
    },
    '山东':{},
    }
    current_level = menu
    last_levels = []
    while True:
    for key in current_level:
    print(key)
    choice = input(">>>>:").strip()
    if choice == "b":
    if not last_levels:break
    current_level = last_levels[-1]
    last_levels.pop()
    elif choice == "q":
    exit("quit")
    elif choice not in current_level:
    continue
    else:
    last_levels.append(current_level)
    current_level = current_level[choice]

    购物车:
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    #user:Felix
    #date:2016-10-19
    #mail:wudonghang@wudonghang.com
    #If you have questions or suggestions, please contact the author.
    import os
    import json
    import time
    import msvcrt

    #定义购物车系统使用变量
    data_file = "data.db"
    system_start = "系统初始化中......".center(50,"-")
    system_1 = "正在加载系统数据库...".center(50,"-")
    system_2 = "系统数据库加载成功!".center(50,"-")
    system_3 = "系统初始化完成!".center(50,"-")
    system_error_1 = "系统数据库加载失败,请联系管理员!".center(50,"-")
    system_error_2 = "系统数据库为空,请联系管理员!".center(45,"-")
    system_error_3 = "用户已被锁定,请联系管理员!".center(45,"-")
    system_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
    shop_list = [["Ipone6",5000],["Ipone7",6000],["Mac Pro",15800],["Coffee",30],["Bike",2000],["Cloth",500],["Note Book",10]]
    def user_message():
    with open(data_file,'r') as message:
    user_message = json.load(message)
    return user_message

    def client_information():
    import socket
    import getpass
    import platform
    import uuid
    myname1=socket.getfqdn(socket.gethostname())
    myaddr=socket.gethostbyname(myname1)
    user=getpass.getuser()
    myplatform=platform.platform()
    mac=uuid.UUID(int=uuid.getnode())
    MAC=mac.hex[-12:]
    information = "主机名:" + myname1 + " " + "IP:" + myaddr + " " + "用户:" + user + " " + "系统:" + myplatform + " " + "MAC:" + MAC
    return information
    def system_initialization():
    print("%s %s"%(system_start,system_1))
    if os.path.exists(data_file):
    print(system_2)
    if open(data_file,"r").read() == "":
    exit(system_error_2)
    else:
    exit(system_error_1)
    print("当前系统时间: %s".center(35,"-") %(system_time))
    print(system_3)

    def password_write():
    print('请输入密码: ', end='', flush=True)
    li = []
    while 1:
    ch = msvcrt.getch()
    if ch == b' ':
    msvcrt.putch(b' ')
    password = b''.join(li).decode()
    break
    elif ch == b'x08':
    if li:
    li.pop()
    msvcrt.putch(b'')
    msvcrt.putch(b' ')
    msvcrt.putch(b'')
    elif ch == b'x1b':
    break
    else:
    li.append(ch)
    msvcrt.putch(b'*')
    return password

    def user_authentication(user_message):
    username = input("请输入用户名:")
    if username not in user_message:
    exit("系统没有找到这个用户".center(50,"-"))
    real_password = user_message[username][0]['password']
    if int(user_message[username][0]['lock']) == 0:
    exit(system_error_3)
    count = 0
    while True:
    print("请选择 0:密码明文输入 1:密码加密输入 ---提示密码加密需要用终端运行!")
    case=input(">>>")
    if case.isdigit():
    case=int(case)
    else:
    print("33[0;31;40m请输入数字33[0m".center(50,"-"))
    if case == 0:
    password=input("请输入密码: ")
    elif case == 1:
    password = password_write()
    else:
    print("33[0;31;40m请输入有效指令ID33[0m")
    if password == real_password:
    print("Welcome! %s 您的余额为:%s"%(username,user_message[username][0]['salary']))
    print("您上次的登陆信息为:%s"%user_message[username][0]['client_information'])
    user_message[username][0]['client_information']=client_information()
    json.dump(user_message, open(data_file, 'w'))
    break
    elif count < 2:
    print("用户密码输入不正确,请重新输入密码:")
    count += 1
    continue
    else:
    user_message[username][0]['lock'] = 0
    json.dump(user_message, open(data_file, 'w'))
    exit("您输入错误的密码超过3次,系统已将您的账户锁定".center(50,"-"))
    return username

    def shoping(username,user_message):
    shopping_list = []
    history_shopping = user_message[username][0]['history_shopping']
    last_shoppoing = user_message[username][0]['last_shopping']
    history_shopping.extend(last_shoppoing)
    user_message[username][0]['history_shopping']=history_shopping

    while True:
    print("product list".center(50,"-"))
    for index,i in enumerate(shop_list):
    print(index,i[0],i[1])
    choice = input("请输入商品编号 or [%s] >>>:"%("quit"))
    if choice.isdigit():
    choice=int(choice)
    if choice >=0 and choice < len(shop_list):
    p = shop_list[choice]
    if user_message[username][0]['salary'] >= p[1]:
    user_message[username][0]['salary'] -= p[1]
    shopping_list.append(p)
    print("Added 33[32;1m[%s]33[0m into your shopping cart,and your current balance is 33[41;1m%s33[0m" %(p[0],user_message[username][0]['salary']))
    else:
    print("钱不够,你只有[33[41;1m%s33[0m]"%user_message[username][0]['salary'])
    else:
    print("33[0;31;40m没有此类商品...33[0m")
    elif choice == "quit":
    print("本次已购买商品".center(50,"-"))
    a = []
    new_shopping = []
    for i in shopping_list:
    b = i[0] + " x " + str(shopping_list.count(i)) + " 33[1;31;40m总价33[0m: " + str(shopping_list.count(i) * i[1])
    a.append(b)
    for i in a:
    if i not in new_shopping:
    new_shopping.append(i)
    for i in new_shopping:
    print(i)
    print("Your left balance is ", user_message[username][0]['salary'])
    user_message[username][0]['last_shopping'] = new_shopping
    json.dump(user_message, open(data_file, 'w'))
    exit("购物车程序已经退出!".center(50,"-"))
    def menu(user_message):
    while True:
    case = input("请选择 0:注册 1:登陆 2:查询 3:充值 4:修改密码 5:解除锁定 6:退出 >>>")
    if case.isdigit():
    case=int(case)
    else:
    print("33[0;31;40m请输入数字33[0m".center(50,"-"))
    if case == 0:
    print("开始注册".center(50,"-"))
    username=input("请输入用户名:")
    if username in user_message:
    print("用户名重复".center(50,"-"))
    continue
    else:
    user_message[username]=[{'history_shopping':[],'password':'123','last_shopping':[],'client_information':[],'salary':0,'lock':1}]
    print(user_message,user_message[username])
    json.dump(user_message, open(data_file, 'w'))
    print("用户注册成功!%s 默认密码为:123 初始余额为:0"%username)
    elif case == 1:
    shoping(username=user_authentication(user_message=user_message),user_message=user_message)
    elif case == 2:
    print("开始查询".center(50,"-"))
    username=input("请输入要查询的用户:")
    if username not in user_message:
    print("系统没有找到这个用户".center(50,"-"))
    continue
    last_shopping=str(user_message[username][0]['last_shopping'])
    history_shopping=str(user_message[username][0]['history_shopping'])
    print("用户名:%s 上次购买的商品为:%s 历史购买的商品为:%s 上次登陆信息为:%s 余额为:33[41;1m%s33[0m"%(username,last_shopping.strip("[").strip("]").replace("\x1b[1;31;40m","").replace("\x1b[0m",""),history_shopping.strip("[").strip("]").replace("\x1b[1;31;40m","").replace("\x1b[0m",""),user_message[username][0]['client_information'],user_message[username][0]['salary']))
    elif case == 3:
    print("开始充值".center(50,"-"))
    username=input("请输入要充值的用户:")
    print("您当前的余额为:33[41;1m%s33[0m"%(user_message[username][0]['salary']))
    money=input("请输入要充值的金额:")
    if money.isdigit():
    money=int(money)
    user_message[username][0]['salary']+=money
    print("充值成功!%s 当前的余额为:33[41;1m%s33[0m"%(username,user_message[username][0]['salary']))
    json.dump(user_message, open(data_file, 'w'))
    else:
    exit("输入错误,为了账号安全,系统已强制退出,欢迎您下次光临".center(50,"-"))
    elif case == 4:
    username=input("请输入要修改密码的用户:")
    if username not in user_message:
    print("系统没有找到这个用户".center(50,"-"))
    continue
    else:
    old_passwd = input("请输入老密码:")
    if old_passwd == user_message[username][0]['password']:
    new1_passwd = input("请输入新密码:")
    new2_passwd = input("请再次输入新密码:")
    if new1_passwd == new2_passwd:
    user_message[username][0]['password']=new2_passwd
    json.dump(user_message, open(data_file, 'w'))
    print("修改密码完成!")
    continue
    else:
    print("两次输入的密码不一致!")
    continue
    else:
    print("密码校验不对,请确认财产安全的情况下,再次修改密码!")
    elif case == 5:
    username=input("请输入要解除锁定的用户:")
    passwd = input("请输入已知密码:")
    if username not in user_message:
    print("系统没有找到这个用户".center(50,"-"))
    continue
    elif passwd == user_message[username][0]['password']:
    user_message[username][0]['lock']=1
    json.dump(user_message, open(data_file, 'w'))
    print("用户[%s]已经解除锁定!"%username)
    else:
    print("密码校验不对,请确认财产安全的情况下,再次解除锁定!")
    elif case == 6:
    exit("已经退出购物车系统".center(50,"-"))
    else:
    print("33[0;31;40m请输入有效指令ID33[0m")

    system_initialization()
    menu(user_message=user_message())
    data.db:
    {"wudonghang": [{"lock": 1, "history_shopping": ["Note Book x 2 u001b[1;31;40mu603bu4ef7u001b[0m: 20", "Coffee x 2 u001b[1;31;40mu603bu4ef7u001b[0m: 60", "Ipone6 x 2 u001b[1;31;40mu603bu4ef7u001b[0m: 10000", "Cloth x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 500", "Note Book x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 10", "Coffee x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 30", "Bike x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 2000", "Coffee x 2 u001b[1;31;40mu603bu4ef7u001b[0m: 60", "Bike x 2 u001b[1;31;40mu603bu4ef7u001b[0m: 4000", "Cloth x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 500", "Note Book x 5 u001b[1;31;40mu603bu4ef7u001b[0m: 50", "Coffee x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 30"], "client_information": "u4e3bu673au540duff1aYOS-01606252229 IPuff1a192.168.11.11 u7528u6237uff1aAdministrator u7cfbu7edfuff1aWindows-7-6.1.7601-SP1 MACuff1a000b2f40160f", "salary": 23312, "last_shopping": ["Note Book x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 10", "Cloth x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 500"], "password": "123"}], "liuyao": [{"lock": 1, "history_shopping": ["Coffee x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 30", "Ipone6 x 1 u001b[1;31;40mu603bu4ef7u001b[0m: 5000"], "client_information": "u4e3bu673au540duff1aYOS-01606252229 IPuff1a192.168.11.11 u7528u6237uff1aAdministrator u7cfbu7edfuff1aWindows-7-6.1.7601-SP1 MACuff1a000b2f40160f", "salary": 19465, "last_shopping": ["Coffee x 2 u001b[1;31;40mu603bu4ef7u001b[0m: 60"], "password": "123"}]}
    readme:
    ###博客园地址:[Python之路,Day2 - Python基础2](http://www.cnblogs.com/wudonghang/p/5984808.html "我的博客园地址")
    ***
    ###程序简介:
    >背景

    #####作业:

    * 购物车

    * 三级菜单


    ***
    >购物车构想

    包含 0:注册 1:登陆 2:查询 3:充值 4:修改密码 5:解除锁定 6:退出等功能

    采用json数据格式完成数据持久化
    0:注册 采用json数据新增
    1:登陆 采用三次验证规则,先判断有没有这个用户,然后判断是否是锁定状态,然后验证密码,错误超过三次锁定用户并退出系统
    2:查询 将用户上次购买,历史购买,上次登陆信息以及余额显示出来
    3:充值 将充值的金额与json中数据相加出新值
    4:修改密码 判断old密码是否正确,错误退出。正确判断输入2次密码是否一致,一致写入文件
    5:解除锁定 判断用户以及密码,来修改json中lock值
    6:退出 exit

    ***

    ***
    >三级菜单构想

    1.定义一个字典,定义地区,省,市
    2.嵌套2个 while True循环,一个为地区外循环,另一个为省市内循环
    3.判断用户输入指令是否正确,不正确报错重新输入
    4.判断用户输入是正确指令还是“b”or“q”,b:返回上一级 q:退出程序

    ***










  • 相关阅读:
    Java数据库——CallableStatement接口
    Java数据库——处理大数据对象
    Java数据库——PreparedStatement接口
    Java数据库——ResultSet接口
    Java数据库——连接关闭、增删改查
    Ubuntu下的MySQL安装
    JDBC
    注释(Annotation)
    类的生命周期
    Java反射机制<2>
  • 原文地址:https://www.cnblogs.com/wudonghang/p/072f0f41bb931ada0358aa2962074823.html
Copyright © 2020-2023  润新知