西窗晓岩
我来不及认真地年轻,待明白过来时,只能选择认真地老去。

导航

 

1、编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

README.txt

1、运行login.py
2、程序首先读取user.txt帐号信息和lock.txt被锁定帐号信息。
3、输入帐号,密码 4、判断:
  如输入正确显示登录成功。
  如输入帐号为锁定帐号,提示用户并退出。
  如帐号名称或密码错误,可再重复输入2次,超过三次后退出程序。如果是系统账户将被锁定帐号写入lock.txt。

流程图:

login.py

# 初始化账户字典,帐号锁定列表
userinfo = {}
lockinfo = []
# 读取账户信息及锁定帐号信息
with open("user.txt", "r") as f1, open("lock.txt", "r") as f2:
    while True:
        line = f1.readline().strip("\n")
        if not line:
            break
        else:
            userinfo[line.split(":")[0]] = line.split(":")[1]
    while True:
        line = f2.readline().strip("\n")
        if not line:
            break
        else:
            lockinfo.append(line)
# 对输入的帐号进行处理
lockflag = 0
while lockflag < 3:    # 控制输入小于3次
     lockflag += 1
     user = input("your name:")
     passwd = input("your password:")
     if user in lockinfo:        #判断是否是锁定帐号
         print("this is lock account!")
         break
     if user in userinfo:        #判断是否是系统内帐号
         if passwd == userinfo[user]: #判断密码是否正确
             print("login ok!")
             break
         else:
             print("password error!")
             continue
     else:
         print("user is erro!")
         continue
else: # 超过3次,将帐号锁定记录至lock.txt
    with open("lock.txt", "a+") as f:
        f.write(user+'\n')
    print("your account is be locked!")

 2、多级菜单

  • 三级菜单
  • 可依次选择进入各子菜单

README.txt

1、初始化地址数据
2、提示用户如何操作
    输入显示菜单,可进入到下一级菜单
    输入b返回上一级菜单
    输入q退出程序
3、输入错误有错误提示,并提示重新输入

流程图:

address.py

# 初始化地址数据
adic = {
    "北京":{
        "朝阳":["望京", "劲松", "亮马桥"],
        "海淀":["黄庄", "魏公村", "大钟寺"]
    },
    "辽宁":{
        "阜新":["海州", "平安", "彰武县"],
        "锦州":["铁西区", "铁东区"]
    }
}

# 说明
print('''可进行的操作有输入菜单名称进入下一级,返回上一级返回输入b,退出输入q!
--------------------------------------------------------------------------------------- ''')

while True:    # 一级菜单循环操作
    for i in adic:
        print(i)
    l1 = input("输入一级菜单或q退出:")
    if l1 == "q":
        exit()
    elif l1 not in adic:
        print("输入错误,重新输入!")
        continue
    while True:        # 二级菜单循环操作
        for i in adic.get(l1):
            print(i)
        l2 = input("输入二级菜单或q退出或b返回上一级:")
        if l2 == "q":
            exit()
        elif l2 == "b":
            break
        elif l2 not in adic.get(l1):
            print("输入错误,重新输入!")
            continue
        else:
            while True:   # 三级菜单循环操作
                for i in adic.get(l1).get(l2):
                    print(i)
                l3 = input("输入q退出或b返回上一级:")
                if l3 == "q":
                    exit()
                elif l3 == "b":
                    break
                else:
                    print("输入错误,重新输入!")
                    continue

 

 

posted on 2017-05-18 12:00  西窗晓岩  阅读(134)  评论(0)    收藏  举报