python修炼之基础篇3(第一周作业)
作业一:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
- 用户名和密码存在文件中
流程图:

文件:
locked.txt
[]
accounts.txt {"liuhaigang":"abc123","alex":"123456","liu":"123"}
code:
1 #!/usr/bin/env python 2 # _*_coding:utf-8_*_ 3 4 5 import time 6 7 count = 0 # 为了记录需求中3次输入错误次数,计数项赋初始值 8 account_file = open("accounts.txt",'r',encoding='utf-8') # 打开正确用户信息文档,获取正确的用户名密码 9 locked_file = open("locked.txt",'r+',encoding='utf-8') # 打开已锁定的用户信息文档,获取锁定的用户名密码 10 name_dic = eval(account_file.read()) # 将正确信息中的字符串转换成字典(原字符串为字典格式) 11 locked_list = eval(locked_file.read()) # 将正确信息中的字符串转换成列表(原字符串为列表格式) 12 count_num = 0 #为了记录密码输入错误的次数,计数项赋初始值 13 while True: 14 #输入无效次数达到3次以后要等待10秒后重新输入 15 if count == 3: 16 print("dute to input non-existent user ,you need to wait 10s") 17 time.sleep(10) 18 # 输入大于3次锁定用户 19 if count_num > 2: 20 locked_list.append(username) # 将已锁定信息加入锁定元组中 21 locked_file.seek(0) # 输入指针移到开头,如果不移动会产生多个元组 22 locked_file.write(str(locked_list)) # 写入锁定信息 23 locked_file.tell() 24 exit("你的账号已经连续三次输入错误已被锁定,请联系管理员!") 25 26 username = input("请输入用户名 : ") 27 if username in locked_list: 28 exit("你输入的账号已锁定,请联系管理员!") 29 elif username in name_dic : #如输入的用户名正确比较输入的密码 30 password = input("请输入密码 : ") 31 if password == name_dic[username] : #判断密码是否正确 32 exit("欢迎%s登录!" %username) #打印登录信息并退出程序 33 else : 34 count_num += 1 35 if count_num <= 2: 36 #print (count) 37 print("你输入的用户名或密码错误,请重新输入!") 38 continue 39 40 #输入的用户信息无效打印错误信息 41 else: 42 count += 1 43 if count < 6: 44 print("你输入的用户名不存在!请输入正确的用户名!") 45 continue 46 else: 47 exit("你输入的无效次数过多已退出")
作业二:三级菜单
作业需求:
1. 运行程序输出第一级菜单
2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单
3. 菜单数据保存在文件中
4. 让用户选择是否要退出
5. 有返回上一级菜单的功能
流程图:

文件(三级菜单的文件)
1 { 2 "北京":{ 3 "朝阳区":{ 4 "高碑店":{"豆各庄地区","孙河地区","望京"}, 5 "管庄":{"惠河西里社区","西会村","东会村"} 6 }, 7 "昌平区":{ 8 "沙河":{"朝宗桥","巩华城","北门展思门"}, 9 "回龙观":{"龙泽园","史各庄"} 10 }, 11 "海淀区":{ 12 "中关村":{"中科院","502研究所","知春大厦"}, 13 "上地":{"方正集团","上地佳源","计算机产业园"} 14 } 15 }, 16 "山东":{ 17 "济南市":{ 18 "历下区":{"千佛山","燕子山","龙洞山"}, 19 "市中区":{"大观园街道","白马山街道","七贤街道"} 20 }, 21 "青岛市":{ 22 "市北区":{"错埠岭","科技街","哈尔滨路"}, 23 "市南区":{"中商大厦","火车站","中山公园"}, 24 "崂山区":{"崂山风景区","大拇指广场","出版大厦"} 25 }, 26 "烟台市":{ 27 "芝罘区":{"恒丰银行","大悦城","万达广场"}, 28 "莱山区":{"烟台大学","山东工商学院","滨洲医学院"} 29 } 30 } 31 }
code:
1 #!/usr/bin/env python 2 # _*_coding:utf-8_*_ 3 4 with open("list.txt","r",encoding="utf-8") as df: 5 data = eval(df.read()) 6 7 exit_flag = False 8 while not exit_flag : 9 print(" 省 ".center(50, '*')) 10 for i in data: 11 print(i) 12 choice = input("请输入省名,或输入q(quit)退出:") 13 if choice in data: 14 while not exit_flag: 15 print(" 市 ".center(50, '*')) 16 for i2 in data[choice]: 17 print(i2) 18 choice2 = input("请输入市名,输入b返回,或输入q(quit)退出:") 19 if choice2 in data[choice]: 20 while not exit_flag: 21 print(" 区 ".center(50, '*')) 22 for i3 in data[choice][choice2]: 23 print (i3) 24 choice3 = input("请输入区名,输入b返回,或输入q(quit)退出") 25 if choice3 in data[choice][choice2]: 26 while not exit_flag: 27 print(" 详细信息 ".center(50, '*')) 28 for i4 in data[choice][choice2][choice3]: 29 print(i4) 30 choice4 = input("已经到最后一层,请按b返回,或输入q(quit)退出>>:") 31 if choice4 == 'b': 32 break 33 elif choice4 == 'q': 34 exit_flag = True 35 else: 36 print("输入无效!请重新输入") 37 elif choice3 == 'b': 38 break 39 elif choice3 == 'q': 40 exit_flag = True 41 else: 42 print("输入无效!请重新输入") 43 elif choice2 == 'b': 44 break 45 elif choice2 == 'q': 46 exit_flag = True 47 else: 48 print("输入无效!请重新输入") 49 elif choice == 'q': 50 exit_flag = True 51 else: 52 print("输入无效!请重新输入")
浙公网安备 33010602011771号