#!/usr/bin/env pthon
#字典操作三级菜单 “b”返回上一级菜单,“q”退出。 menu={"BJ":{"cp":{1:1,2:2,3:3},
"ft":{1:4,2:5,3:6}},
"SH":{"lz":{1:1,2:2,3:3}
},
"HK":{"tz":{1:1,2:2,3:3},
"fs":{1:4,2:5,3:6}}}
def one_menu():
for i in range(0,len(menu.keys())):
print(str(i+1) +"."+ menu.keys()[i])
i+=1
one_menu() def tow_menu(city):
menu_list=menu.get(city).keys()
for i in range(0,len(menu_list)):
print (str(i+1) + "." + menu_list[i])
i+=1 def three_menu(city,area): area_menu=menu.get(city).get(area)
for i in range(0,len(area_menu)):
print(area_menu.items()[i]) chose_num="b"
while chose_num !="q":
chose_num=raw_input("please chose menu:") if chose_num =="":
tow_menu("HK") while chose_num !="q":
chose_num=raw_input("please chose menu:") if chose_num=="":
three_menu("HK","fs")
elif chose_num=="":
three_menu("HK","tz")
elif chose_num=="b":
tow_menu("HK")
break
elif chose_num=="q":
exit()
else:
print("input error!") elif chose_num =="":
tow_menu("SH")
while chose_num !="q":
chose_num=raw_input("please chose menu:") if chose_num=="":
three_menu("SH","lz") elif chose_num=="b":
tow_menu("SH")
break
elif chose_num=="q":
exit()
else:
print("input error!")
elif chose_num =="":
tow_menu("BJ")
while chose_num !="q":
chose_num=raw_input("please chose menu:") if chose_num=="":
three_menu("BJ","ft")
elif chose_num=="":
three_menu("BJ","cp")
elif chose_num=="b":
tow_menu("BJ")
break
elif chose_num=="q":
exit()
else:
print("input error!") elif chose_num =="b":
one_menu()
elif chose_num =="q":
exit()
else:
print("input error!")

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

 #!/usr/bin/env python
# -*-coding:UTF-8-*-
3
4 def login(): f=open("user",'r') #读取user配置文件。
cont=f.readlines() #readlines把读取的行当作元素返回一个列表
f.close()
allname=[] #初始化一个用户列表
allpasswd=[]
for i in range(0,len(cont)-1): #len获取cont列表的元素数量
onecont=cont[i].split() #循环取一行内容并分割成列表,split()以空格为分隔符分割字符串并返回一个列表。
onename=onecont[0] #循环取一行中的帐号
onepasswd=onecont[1] #
allname.append(onename) #循环把每一行取到的帐号追加到用户列表中
allpasswd.append(onepasswd)
lf=open("user.lock",'r')
lcont=lf.readlines()
lf.close()
# print(lcont) #打印用户锁文件内容
# print(allname)
# print(allpasswd) cont=0
while cont < 3:
username=raw_input("login user:").strip()
passwd=raw_input("password:")
if username not in allname:
print("No this accont!") elif (username +"\n") in lcont:
print("your account has been locked!Please contact admin!")
break
else:
rel_passwd_index=allname.index(username) #取该帐号在用户列表中的索引,此时用户列表的索引和密码列表的索引是对应的,因此我们同样>取到了该帐号的密码在密码列表的索引
rel_passwd=allpasswd[rel_passwd_index] #取该帐号的真实密码
if passwd==rel_passwd:
print("Login success!")
break
else:
print("password is error!")
cont+=1
if cont >= 3:
print("Excessive password error,your account has been locked!Please contact admin!")
nf=open("user.lock",'wb')
nf.write(username+"\n")
nf.close() 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. jQuery on 绑定的事件触发多次

    jquery用on绑定事件,在代码执行过程中,可能会遇到多次执行的情况. 解决方案是在on的事件前面加上一个off,再on. $('#btnBind').off('click').on('click' ...

  2. C++对象模型详解

    原文链接:吴秦大神的C++对象模型. 何为C++对象模型? C++对象模型可以概括为以下2部分: 1.语言中直接支持面向对象程序设计的部分: 2.对于各种支持的底层实现机制. 语言中直接支持面向对象程 ...

  3. bash profile .bashrc

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一 ...

  4. background-size拉伸背景图片

    在制作页面中常需要对背景图片在容器中进行平铺,可用background-size属性对背景编辑:拉伸,压缩等~ background-size:contain; 将背景扩展到整个容器大小. 较为实用的 ...

  5. MySQL 第十天(视图、存储过程、函数、触发器)

    MySql高级-视图.函数.存储过程.触发器 目录 一.视图    1 1.视图的定义    1 2.视图的作用    1 (1)可以简化查询.    1 (2)可以进行权限控制,    3 3.查询 ...

  6. Linux下的tar压缩解压缩命令详解

    转载自http://www.cnblogs.com/qq78292959/archive/2011/07/06/2099427.html tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压 ...

  7. SecureCRT的安装

    SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. SecureCRT 是高度可定制的终端仿真器,适用于 In ...

  8. 学习制作第一个 openfire 插件

    本文地址:http://www.cnblogs.com/jying/p/3683409.html 蛋疼的自学路~~~ 开始想法是修改openfire源码,但修改后发现不好测试,不会发布,不会使用,各种 ...

  9. CRM域用户误删恢复

    记录一下: 不小心将CRM用户在域中删除了(CRM中未删除),直接新建一个同样账号的域用户然后尝试在CRM中登录报“invalid user”错误,一番检查发现从2011版本开始CRM中不单记录了用户 ...

  10. lisp中的cons

    看到ANSI Common Lisp 第三章的游程编码时,就发现作者很准确的使用了list和cons来生成目标列表,虽然list是由cons扩展而来,区别也仅仅是最后一个元素的加入方式,于是勾起了之前 ...