作业:

作业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-----作业(登录程序和三级菜单)相关推荐

  1. 【python作业2回顾】——编写购物车程序、三级菜单程序

    第一部分:课堂小练习的思考总结 一.购物车程序 课程中要求所用时间:30分钟 实际自己所用时间:3个小时 这个练习所用时间严重超标,1.5小时用来做基本需求,1.5小时用来做优化了. 需求描述: 1. ...

  2. python的进程线程和协程_python成长之路 :线程、进程和协程

    python线程 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分 ...

  3. java项目怎样提高性能_Java程序员成长之路(如何提高Java程序性能?)

    1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资 ...

  4. python 课后作业_python 学习笔记 五 课后作业

    # # 1.有如下变量(tu是个元组),请实现要求的功能 # tu = ('alex',[11,22,{'k1':'v1','k2':['age','name'],'k3':(11,22,33)},4 ...

  5. python 课后作业_python 学习笔记 三 课后作业

    # 1.有变量name = "aleX leNb"完成如下操作: # 1,移除name变量对应的值两边的空格,并输出处理结果 """ name = ' ...

  6. python123.io能不能补交作业_Python学习day1作业总结

    为了以后更好更快速的复习,此博客记录我对作业的总结.对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的. 一.模拟登陆: ...

  7. python最简单选课系统作业_python之路——作业:学生选课系统

    一.作业要求: 选课系统: 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go ...

  8. 蒟蒻成长之路(持续更新)

    蒟蒻成长之路 (这个玩意只是闲着写写, 写给自己看的) 开始 开始日期:2023年3月23日20:55:24 内容 主要记录一些做题日常和快乐的学校生活 初一:2022~2023 Day1--2023 ...

  9. 刘知远、赵鑫、施柏鑫:AI青年科研人员成长之路

    整理 | 刘冰一 在6月2日举办的智源大会青源学术年会举办的一个圆桌"青年科研人员成长之路与经验分享"上,清华大学计算机系副教授刘知远.中国人民大学高瓴人工智能学院长聘副教授赵鑫. ...

最新文章

  1. 算法 快速求一个整数的7倍
  2. Android开发技术周报 Issue#20
  3. 循环神经网络:RNN、LSTM、GRU、BPTT
  4. android avd orientation support,Android AVD-无法旋转风景/人像
  5. JavaScript方法——call和apply
  6. 工作206:修改新增按钮显示逻辑
  7. SpringBoot 之环境搭建
  8. 为ESXI 添加ISCSI存储设备 Linux服务器系统
  9. linux的nice命令用法,nice命令详解
  10. 读书笔记Black-Scholes-Merton之二
  11. android gridview滚动监听,检测GridView滚动速度 – Android
  12. 装完机,启grub+Linux,linux一路填坑...
  13. MATLAB图像去雾算法
  14. matlab导出prn文件怎么打开,prn文件介绍及打印方法
  15. 不能访问网络位置的解决方法(转)
  16. python画平行四边形_利用transform skewX制作平行四边形导航菜单
  17. Unity实现功能之局域网实时语音
  18. 使用MQTTNet包实现客户端与服务端通讯
  19. 北川中学教师群体:一切都是为了学生
  20. 知识图谱认知智能理论与实战----------第一章 知识图谱概述

热门文章

  1. matlab绘图命令汇总
  2. java滚动字幕的实现的实训_实现滚动字幕
  3. 通过tasker上传手机电量到domoticz中,电量过低时,自动充电
  4. iPad Mini 到底什么样?4点概括
  5. autojs教程,启点科技自动脚本代码
  6. 数字电子钟整点报时Multisim仿真
  7. iPhone设置整点报时提醒
  8. windows xp 驱动开发(三)DDK与WDK WDM的区别
  9. linux指定日期月末,linux 获取某个日期对应的月末日期方法
  10. 简历中的项目到底该如何写?面试中该如何介绍项目?看这篇就足够了