1.  
  1. #!/usr/bin/env pthon
  2. #字典操作三级菜单 b”返回上一级菜单,“q”退出。
  3.  
  4. menu={"BJ":{"cp":{1:1,2:2,3:3},
  5. "ft":{1:4,2:5,3:6}},
  6. "SH":{"lz":{1:1,2:2,3:3}
  7. },
  8. "HK":{"tz":{1:1,2:2,3:3},
  9. "fs":{1:4,2:5,3:6}}}
  10. def one_menu():
  11. for i in range(0,len(menu.keys())):
  12. print(str(i+1) +"."+ menu.keys()[i])
  13. i+=1
  14. one_menu()
  15.  
  16. def tow_menu(city):
  17. menu_list=menu.get(city).keys()
  18. for i in range(0,len(menu_list)):
  19. print (str(i+1) + "." + menu_list[i])
  20. i+=1
  21.  
  22. def three_menu(city,area):
  23.  
  24. area_menu=menu.get(city).get(area)
  25. for i in range(0,len(area_menu)):
  26. print(area_menu.items()[i])
  27.  
  28. chose_num="b"
  29. while chose_num !="q":
  30. chose_num=raw_input("please chose menu:")
  31.  
  32. if chose_num =="":
  33. tow_menu("HK")
  34.  
  35. while chose_num !="q":
  36. chose_num=raw_input("please chose menu:")
  37.  
  38. if chose_num=="":
  39. three_menu("HK","fs")
  40. elif chose_num=="":
  41. three_menu("HK","tz")
  42. elif chose_num=="b":
  43. tow_menu("HK")
  44. break
  45. elif chose_num=="q":
  46. exit()
  47. else:
  48. print("input error!")
  49.  
  50. elif chose_num =="":
  51. tow_menu("SH")
  52. while chose_num !="q":
  53. chose_num=raw_input("please chose menu:")
  54.  
  55. if chose_num=="":
  56. three_menu("SH","lz")
  57.  
  58. elif chose_num=="b":
  59. tow_menu("SH")
  60. break
  61. elif chose_num=="q":
  62. exit()
  63. else:
  64. print("input error!")
  65. elif chose_num =="":
  66. tow_menu("BJ")
  67. while chose_num !="q":
  68. chose_num=raw_input("please chose menu:")
  69.  
  70. if chose_num=="":
  71. three_menu("BJ","ft")
  72. elif chose_num=="":
  73. three_menu("BJ","cp")
  74. elif chose_num=="b":
  75. tow_menu("BJ")
  76. break
  77. elif chose_num=="q":
  78. exit()
  79. else:
  80. print("input error!")
  81.  
  82. elif chose_num =="b":
  83. one_menu()
  84. elif chose_num =="q":
  85. exit()
  86. else:
  87. print("input error!")
  1.  

#文件操作用户登录,提示用户名不存在 和 密码错误,密码错误超过3次则锁定用户登录。

  1. #!/usr/bin/env python
  2. # -*-coding:UTF-8-*-
  3. 3
    4
  4.  
  5. def login():
  6.  
  7. f=open("user",'r') #读取user配置文件。
  8. cont=f.readlines() #readlines把读取的行当作元素返回一个列表
  9. f.close()
  10. allname=[] #初始化一个用户列表
  11. allpasswd=[]
  12. for i in range(0,len(cont)-1): #len获取cont列表的元素数量
  13. onecont=cont[i].split() #循环取一行内容并分割成列表,split()以空格为分隔符分割字符串并返回一个列表。
  14. onename=onecont[0] #循环取一行中的帐号
  15. onepasswd=onecont[1] #
  16. allname.append(onename) #循环把每一行取到的帐号追加到用户列表中
  17. allpasswd.append(onepasswd)
  18. lf=open("user.lock",'r')
  19. lcont=lf.readlines()
  20. lf.close()
  21. # print(lcont) #打印用户锁文件内容
  22. # print(allname)
  23. # print(allpasswd)
  24.  
  25. cont=0
  26. while cont < 3:
  27. username=raw_input("login user:").strip()
  28. passwd=raw_input("password:")
  29. if username not in allname:
  30. print("No this accont!")
  31.  
  32. elif (username +"\n") in lcont:
  33. print("your account has been locked!Please contact admin!")
  34. break
  35. else:
  36. rel_passwd_index=allname.index(username) #取该帐号在用户列表中的索引,此时用户列表的索引和密码列表的索引是对应的,因此我们同样>取到了该帐号的密码在密码列表的索引
  37. rel_passwd=allpasswd[rel_passwd_index] #取该帐号的真实密码
  38. if passwd==rel_passwd:
  39. print("Login success!")
  40. break
  41. else:
  42. print("password is error!")
  43. cont+=1
  44. if cont >= 3:
  45. print("Excessive password error,your account has been locked!Please contact admin!")
  46. nf=open("user.lock",'wb')
  47. nf.write(username+"\n")
  48. nf.close()
  49.  
  50. login()

老男孩python自动化运维作业1的更多相关文章

  1. 老男孩python自动化运维作业2

    拿到要求真不知道怎么写,不能还要写个商城页面吧: 最后还是用了input()模拟用户操作吧- -!不就操作个字典吗(字典模拟商品数据). python版本: >>>import sy ...

  2. Day1 老男孩python自动化运维课程学习笔记

    2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...

  3. 老男孩Python自动化运维视频

    链接:https://pan.baidu.com/s/1VLXJ0RZr39kpSGthkLkgmA 密码私聊我

  4. python自动化运维学习第一天--day1

    学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...

  5. Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|

    内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...

  6. 【目录】Python自动化运维

    目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...

  7. python自动化运维篇

    1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...

  8. Python自动化运维的职业发展道路(暂定)

    Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...

  9. Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...

随机推荐

  1. Linux 文件与目录管理

    Linux 文件与目录管理 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是绝对 ...

  2. AC 设置DMZ口上网

  3. python中获取上一个月一号的方法

    业务场景: 我们经常会跑一些月级别或者周级别的报表. 周级别的报表还比较好确定,就是七天前的直接用timedelta(days=7)来获取开始日期就可以了; 但是月级别的报表就要麻烦一些,因为time ...

  4. ReactJS学习笔记(三)

    需要注意的问题: 1.组件名称开头字母一定要大写.(PS:原因是 React 的 JSX 里约定分别使用首字母大.小写来区分本地组件的类和 HTML 标签.) 2.this.props.childre ...

  5. <fmt:formatDate>标签的输出格式:

    <fmt:formatDate>标签的输出格式:  d   月中的某一天.一位数的日期没有前导零.      dd   月中的某一天.一位数的日期有一个前导零.      ddd   周中 ...

  6. Ajax请求数据

    后台使用数数组的形式存放数据(以键值对的形式存放).让后再Json转码. Map<String,String> map=new HashMap<String,String>() ...

  7. Caffe应用篇----文件格式转换

    网友文章: 我们手中有的一般都是图片数据,jpg.bmp格式等,但caffe常使用的数据是db格式(leveldb/lmdb),因此首先我们要将自己数据转换成caffe可运行的格式文件.别捉鸡,caf ...

  8. canvas知识点

    看到网上某些特别好看的效果,就突然想看看这个canvas; canvas是html5中的一个标签.所以兼容的是Internet Explorer 9.Firefox.Opera.Chrome 和 Sa ...

  9. RedHat6.5更新软件源

    今天在Red Hat上安装软件时,发现需要依赖软件,然而在用sudo yum指令时,出现了下面的错误: This system is not registered to Red Hat Subscri ...

  10. 用Linux自带的Logrotate来管理日志

    Logrotate是由cron控制,cron在规定的时间执行 " logrotate  /etc/logrotate.conf "命令.将对象日志进行转储,删除,压缩等操作... ...