python123.io作业_python成长之路-----day1-----作业(登录程序和三级菜单)
作业:
作业1:用户登录
1)程序说明:
a.用户输入密码验证成功然后打印欢迎信息
b.如果密码错误,用户登录失败,提示用户,密码错误
c.用户输入密码错误3次,则用户锁定
d.当用户多次输入不存在的用户时,提示错误信息,并让用户等待10s之后再次输入
账户信息保存在user.txt中,例子:dean,dean123,0 这三个值分别表示的含义:第一位是:username,第二位是:password,第三位表示用户的状态,0表示正常,1表示锁定
2)流程图如下:
3)程序代码:1 #AUTHOR:FAN
2 import time
3 #定义一个用户字典
4 user_dict={}
5 #定义一个用户列表
6 user_list=[]
7
8 f=open("user.txt",'r')
9 #用for循环获取文件中每行的内容,并写入到字典中,value_interm[0]表示username,value_interm[1]表示password,value_interm[2]表示
10 #账户的锁定信息:0表示正常,1表示锁定
11 for line in f.readlines():
12 useriterm = line.strip()
13 value_interm = useriterm.split(',')
14 value_username = value_interm[0]
15 value_password = value_interm[1]
16 value_lock = value_interm[2]
17 user_dict[value_username]={
18 "name":value_username,
19 "password":value_password,
20 "lock":value_lock
21 }
22 f.close()
23 #print(user_dict)
24 #定义个count_num用户计算用户输入错误用户的次数
25 count_num = 0
26 #用于跳出多层循环
27 flag = True
28 while flag:
29 if count_num == 3:
30 print("dute to input non-existent user ,you need to wait 10s")
31 time.sleep(10)
32 # 获取用户输入的用户名
33 user_name = input("please input your username:")
34 if user_name in user_dict.keys():
35 #print(type(user_dict[user_name]["lock"]))
36 #判断用户是否被锁定
37 if int(user_dict[user_name]["lock"]) == 0:
38 for i in range(3):
39 password = input("please input you password:")
40 #判断密码是否正确
41 if password == user_dict[user_name]["password"]:
42 print("welcome to login my system!")
43 flag=False
44 break
45 else:
46 print("password is error")
47 else:
48 #用户输入密码错误三次后被锁定
49 user_dict[user_name]["lock"]="1"
50 f = open("user.txt","w+")
51 #将字典装换成列表,将改变的信息写入到文件中
52 for value in user_dict.values():
53 user_list =[value["name"],value["password"],value["lock"]]
54 user_list =",".join(user_list)
55 f.write(user_list+"\n")
56 print("you input wrong password too many,the user is locked")
57 break
58 else:
59 print("user is locked")
60 else:
61 print("user is not exist")
62 count_num+=1
作业2:三级菜单
1)程序说明:
a.用户运行程序后,打印第一级菜单
b.用户输入相应的编号进入下一级菜单,当编号错误的时候会提示用户输入错误,并让用户重新输入
c.用户在每一级的时候,都能通过输入q退出程序,并能通过输入up返回到上级菜单,返回到上级目录时要将上级目录进行打印
d.用户到最后一级的时候提示用户已经到最后一级目录,可以直接退出程序或返回上级目录
2)流程图如下:
3)程序代码:1 #AUTHOR:FAN
2 #定义一个菜单字典
3 menu_dict={
4 "河南省":{
5 "焦作市":{
6 "修武县":{"AA","BB","CC"},
7 "武陟县":{"DD","EE","FF"},
8 "博爱县":{"GG","HH","II"}
9 },
10 "新乡市":{
11 "辉县":{"AA","BB","CC"},
12 "封丘县":{"DD","EE","FF"},
13 "延津县":{"GG","HH","II"}
14 }
15 },
16 "河北省":{
17 "邢台":{
18 "宁晋县":{"AA","BB","CC"},
19 "内丘县":{"DD","EE","FF"},
20 "邢台县":{"GG","HH","II"}
21 },
22 "唐山":{
23 "乐亭县":{"AA","BB","CC"},
24 "唐海县":{"DD","EE","FF"},
25 "玉田县":{"GG","HH","II"}
26 }
27 }
28 }
29 #用户退出多级菜单用flag
30 flag =True
31 while flag:
32 #用于记录一级菜单key的个数
33 count1 = 0
34 #打印一级菜单
35 for index,key in enumerate(menu_dict.keys()):
36 count1+=1
37 print(index,key)
38 user_choice = input("please input your choice:")
39 #判断用户输入的值是否为全数字
40 if user_choice.isdigit() is True:
41 user_choice = int(user_choice)
42 #判断用户输入的值是否大于列表的最大值
43 if user_choice < count1:
44 #将字典转换成列表,menu_dict.keys()默认不是列表
45 menu_list = list(menu_dict.keys())
46 else:
47 print("you need input right num")
48 continue
49 elif user_choice == "q":
50 flag= False
51 break
52 else:
53 print("please input a num")
54 continue
55 while flag:
56 count2= 1
57 for index,key in enumerate(menu_dict[menu_list[user_choice]].keys()):
58 count2+=1
59 print (index,key)
60 user_choice2 = input("please input your choice(q:退出程序,up上一级):")
61 if user_choice2.isdigit() is True:
62 user_choice2 = int(user_choice2)
63 if user_choice2 < count2:
64 menu_list2 = list(menu_dict[menu_list[user_choice]].keys())
65 else:
66 print("you need input right num")
67 continue
68 elif user_choice2 == "q":
69 flag=False
70 break
71 elif user_choice2 =="up":
72 break
73 else:
74 print("please input a num")
75 continue
76 while flag:
77 count3=0
78 for index,key in enumerate(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]].keys()):
79 print(index,key)
80 count3+=1
81 user_choice3 =input("please input your choice(q:退出程序,up上一级):")
82 if user_choice3.isdigit() is True:
83 user_choice3=int(user_choice3)
84 if user_choice3 < count3:
85 menu_list3 = list(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]])
86 else:
87 print("you need input right num")
88 continue
89 elif user_choice3 == "up":
90 break
91 elif user_choice3 =="q":
92 flag =False
93 break
94 else:
95 print("please input a num")
96 continue
97 while flag:
98 for index,key in enumerate(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]][menu_list3[user_choice3]]):
99 print (index,key)
100 #提示用户已经到最后一级目录,可以退出或返回上级目录
101 q_or_up = input("This is last level,you want to q(退出程序) or up(上一级):")
102 if q_or_up == "q":
103 flag = False
104 break
105 elif q_or_up == "up":
106 break
107 else:
108 continue
python123.io作业_python成长之路-----day1-----作业(登录程序和三级菜单)相关推荐
- 【python作业2回顾】——编写购物车程序、三级菜单程序
第一部分:课堂小练习的思考总结 一.购物车程序 课程中要求所用时间:30分钟 实际自己所用时间:3个小时 这个练习所用时间严重超标,1.5小时用来做基本需求,1.5小时用来做优化了. 需求描述: 1. ...
- python的进程线程和协程_python成长之路 :线程、进程和协程
python线程 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分 ...
- java项目怎样提高性能_Java程序员成长之路(如何提高Java程序性能?)
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资 ...
- python 课后作业_python 学习笔记 五 课后作业
# # 1.有如下变量(tu是个元组),请实现要求的功能 # tu = ('alex',[11,22,{'k1':'v1','k2':['age','name'],'k3':(11,22,33)},4 ...
- python 课后作业_python 学习笔记 三 课后作业
# 1.有变量name = "aleX leNb"完成如下操作: # 1,移除name变量对应的值两边的空格,并输出处理结果 """ name = ' ...
- python123.io能不能补交作业_Python学习day1作业总结
为了以后更好更快速的复习,此博客记录我对作业的总结.对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的. 一.模拟登陆: ...
- python最简单选课系统作业_python之路——作业:学生选课系统
一.作业要求: 选课系统: 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go ...
- 蒟蒻成长之路(持续更新)
蒟蒻成长之路 (这个玩意只是闲着写写, 写给自己看的) 开始 开始日期:2023年3月23日20:55:24 内容 主要记录一些做题日常和快乐的学校生活 初一:2022~2023 Day1--2023 ...
- 刘知远、赵鑫、施柏鑫:AI青年科研人员成长之路
整理 | 刘冰一 在6月2日举办的智源大会青源学术年会举办的一个圆桌"青年科研人员成长之路与经验分享"上,清华大学计算机系副教授刘知远.中国人民大学高瓴人工智能学院长聘副教授赵鑫. ...
最新文章
- 算法 快速求一个整数的7倍
- Android开发技术周报 Issue#20
- 循环神经网络:RNN、LSTM、GRU、BPTT
- android avd orientation support,Android AVD-无法旋转风景/人像
- JavaScript方法——call和apply
- 工作206:修改新增按钮显示逻辑
- SpringBoot 之环境搭建
- 为ESXI 添加ISCSI存储设备 Linux服务器系统
- linux的nice命令用法,nice命令详解
- 读书笔记Black-Scholes-Merton之二
- android gridview滚动监听,检测GridView滚动速度 – Android
- 装完机,启grub+Linux,linux一路填坑...
- MATLAB图像去雾算法
- matlab导出prn文件怎么打开,prn文件介绍及打印方法
- 不能访问网络位置的解决方法(转)
- python画平行四边形_利用transform skewX制作平行四边形导航菜单
- Unity实现功能之局域网实时语音
- 使用MQTTNet包实现客户端与服务端通讯
- 北川中学教师群体:一切都是为了学生
- 知识图谱认知智能理论与实战----------第一章 知识图谱概述