标签:
1,多用户登录,3次锁定
#!/usr/bin/env python # -*- coding: UTF-8 -*- # Author: Aaron Shen import sys #导入模块 user = {‘alex‘:‘alex123‘,‘guest‘:‘123‘} #确定可用的用户名和密码 f = open(‘black.list‘,‘a+‘) #创建黑名单 f.close() #关闭文件 while True: #遍历循环 match = 0 #锁定匹配 username = input(‘username:‘) #输入用户名 f = open(‘black.list‘) #打开黑名单 for line in f.readlines(): #遍历所有行 if username == line.strip(‘\n‘): #如果用户名匹配 print(‘The user has been locked‘) #打印 match = 1 #锁定 f.close() #关闭文件 if match == 1: #如果输入的用户名已锁定 continue #跳出此次循环,重新输入 else: #否则 if username in user.keys(): #如果用户名存在 for i in range(5): #遍历 if i < 3: #遍历3次 password = input(‘password:‘) #输入密码 if password == user[username]: #密码正确 print(‘welcome to my system‘) #打印 sys.exit(0) #安全退出 else: #否则 print(‘\033[31;1mPassword error\033[0m‘) #打印失败 else: #输入三次以后 print(‘You have tried 3 times, all failed, 88‘) #打印 f = open(‘black.list‘,‘a‘) #打开黑名单,开启追加功能 f.write(‘%s\n‘ %username) #写入相应用户名 f.close() #关闭文件 break #跳出此次循环,重新输入用户名 else: #用户名不存在 print(‘user does not exist.‘) #打印
2,多菜单联系,B回退到上一级目录,Q整体退出。
#!/usr/bin/env python # -*- coding: UTF-8 -*- # Author: Aaron Shen import sys #导入模块,用于最后的安全退出 first_city = { ‘北京‘:{‘西城区‘:{‘西直门‘:[‘肯德基‘,‘麦当劳‘],‘动物园‘:[‘公园‘,‘服装市场‘]}, ‘东城区‘:{‘东单‘:[‘DQ冰淇凌‘,‘八喜‘],‘三里屯‘:[‘酒吧‘,‘工体‘]}, ‘朝阳区‘:{‘北辰‘:[‘鸟巢‘,‘水立方‘],‘国展‘:[‘CBD‘,‘大型商场‘]}}, ‘上海‘:{‘黄浦区‘:{‘城隍庙‘:[‘书店‘,‘水煎包‘],‘黄埔一路‘:[‘赛百味‘,‘成都小吃‘]}, ‘长宁区‘:{‘一街‘:[‘豪宅‘,‘服装店‘],‘二街‘:[‘肯德基‘,‘和路雪‘]}, ‘宝山区‘:{‘101路‘:[‘乐器店‘,‘篮球场‘],‘202路‘:[‘酒吧‘,‘书店‘]}}, ‘广州‘:{‘天河区‘:{‘一桥‘:[‘足球场‘,‘球衣店‘],‘二桥‘:[‘大型商场‘,‘酒吧‘]}, ‘越秀区‘:{‘1区‘:[‘公园‘,‘中学‘],‘2q区‘:[‘链家‘,‘我爱我家‘]}} } #多菜单字典 flag = 1 #退出标记,用于跳出多重循环 while True: #开始遍历 if flag == 0: #如果标记触发 break #跳出本层循环 for city in enumerate(first_city.keys()): #循环出一级城市,用enumerate来标记数字次序 print("%s:%s" %city) #打印数字:城市 print("\033[33;1mEnter ‘q‘ on exit \n\033[0m") #打印q则退出 select_number = input(‘input city number:‘).strip() #用户输入对应数字,前后空格忽略 if select_number == ‘q‘: #如果输入是q print(‘quit‘) #打印quit break #退出整个循环 elif select_number == ‘‘: #如果输入为空 print(‘Please input.‘) #打印 continue #跳过本次循环,重新输入 elif int(select_number) >= len(first_city.keys()): #如果输入号码大于所存在的城市数量 print(‘Error,try again‘) #打印 continue #跳过本次循环,重新输入 else: #否则 sel_number = int(select_number) #输入数字化 m = list(first_city.keys()) #将一级城市形成列表 print(m[sel_number]) #打印出城市 while True: #二层遍历 if flag == 0: #如果标记触发 break #跳出本次循环 for area in enumerate(first_city[m[sel_number]].keys()): #循环出二级行政区,用enumerate来标记数字次序 print("%s:%s" %area) #打印 print("\033[33;1mEnter the ‘q‘ exit, enter the ‘b‘ on the back of the first menu\n\033[0m")# #打印 select_number2 = input(‘input area number:‘).strip() #用户输入对应数字,前后空格忽略 if select_number2 == ‘q‘: #如果输入是q print(‘quit‘) #打印 flag = 0 #触发退出标记 break #退出本次循环,返回到上级循环 if select_number2 == ‘b‘: #如果输入是b break #退出本次循环,返回到上级循环 elif select_number2 == ‘‘: #如果输入为空 print(‘Please input.‘) #打印 continue #跳过本次循环,重新输入 elif int(select_number2) >= len(first_city[m[sel_number]].keys()): #如果输入号码大于所存在的行政区数量 print(‘Error,try again‘) #打印 continue #跳过本次循环,重新输入 else: #否则 sel_number2 = int(select_number2) #输入数字化 m2 = list(first_city[m[sel_number]].keys()) #将二级行政区形成列表 print(m2[sel_number2]) #打印 while True: #三层遍历 for street in enumerate(first_city[m[sel_number]][m2[sel_number2]].keys()): #循环出三级街道社区,用enumerate来标记数字次序 print("%s:%s" %street) #打印 print("\033[33;1mEnter the ‘q‘ exit, enter the ‘b‘ on the back of the first menu\n\033[0m") #打印 select_number3 = input(‘input street number:‘).strip() #用户输入对应数字,前后空格忽略 if select_number3 == ‘q‘: #如果输入是q print(‘quit‘) #打印 flag = 0 #触发退出标记 break #退出本次循环,返回到上级循环 elif select_number3 == ‘b‘: #如果输入是b break #退出本次循环,返回到上级循环 elif select_number3 == ‘‘: #如果输入为空 print(‘Please input.‘) #打印 continue #跳过本次循环,重新输入 elif int(select_number3) >= len(first_city[m[sel_number]][m2[sel_number2]].keys()): #如果输入号码大于所存在的社区街道数量 print(‘Error,try again‘) #打印 continue #跳过本次循环,重新输入 else: #否则 sel_number3 = int(select_number3) #输入数字化 m3 = list(first_city[m[sel_number]][m2[sel_number2]].keys()) #将三级社区街道形成列表 print(first_city[m[sel_number]][m2[sel_number2]][m3[sel_number3]]) #打印 sys.exit(0) #安全退出
标签:
原文地址:http://www.cnblogs.com/aaron-shen/p/5495119.html