1.编写一个登陆程序,要求可以登录成功返回欢迎信息,密码输入错误3次锁定该用户不让登录。

思路:需要数据库来储存客户信息(数据库后期在实现,现在用文件形式实现)

需要2个文件来存储,1个文件存储客户信息(passwd文件),1个存储黑名单信息(names文件)(连续3次输错,锁定的用户)

<pre>def zuce():
    while 1:
        a=input("Enter the name you want to register:").strip()
        b=input("Enter the password you want to register your account number:").strip()
        if a.strip()=='' or b.strip()=='':
            print ("The name or passwd cannot be empty!")
            continue
        with open("passwd",'r') as p1:
            l1=[]
            for j1 in p1.readlines():
                l1.append(j1.split(' ',1)[0])
                if a in l1:
                    print ("This %s user name already exists!"%a)
                    break
        if a not in l1:
                mm=open ("passwd","a")
                mm.write(a+" "+b+"\n")
                mm.close()
                print ("Successful registration.Your username is %s, the password is %s Please login again~"%(a,b))
                login()

def login():
    count=0
    while count<3:
        user1=input("input your login name:").strip()
        passwd1=input("input your login passwd:").strip()
        if user1.strip()=='' or passwd1=='':
            print ("The name or passwd cannot be empty!")
            continue
        with open("names",'r') as m:
            for i in m.readlines():
                i=i.split()
                if user1 == i[0]:
                    print("%s user is lock!"%user1)
                    exit()
        with open("passwd",'r') as p:
            l=[]
            for j in p.readlines():
                l.append(j.split(' ',1)[0])
            if user1 not in l:
                print("The %s user does not exist. Please register!"%user1)
                zuce()
        with open("passwd",'r') as f:
            flag=0
            for line in f.readlines():
                user,passwd=line.strip().split()
                if user1==user and passwd1==passwd:
                    print ("login success!")
                    print("welcome %s user to ycy system~"%user1)
                    flag=1
                    exit()
            if flag==0:
                if count<3:
                    print ("The user name or password you entered is incorrect. Please try again!")
                count+=1
    if count>=3:
        with open("names",'a') as n:
            n.write(user1+'\n')
            print("sorry too many try %s user is lock!"%user1)

login()

该程序还有一个重大bug,如:前2次输入的是a用户错误,最后一次输入的是b用户错误,最后锁定的是b用户的账号。

2.编写一个三级菜单,类似(省,市,县)

思路:定义一个字典存储信息 ,通过列表索引

<pre>zone = {
'山东' : {
'青岛' : ['四方','黄岛','崂山','李沧','城阳'],
'济南' : ['历城','槐荫','高新','长青','章丘'],
'烟台' : ['龙口','莱山','牟平','蓬莱','招远']
},
'江西' : {
'吉安' : ['吉水','青原','吉州','安福','新圩'],
'九江' : ['都昌','武宁','修水','永修','湖口'],
'赣州' : ['信丰','大余','上尤','安远','龙南']
},
'广东' : {
'深圳' : ['罗湖','福田','南山','宝安','布吉'],
'广州' : ['天河','珠海','越秀','白云','黄埔'],
'东莞' : ['莞城','长安','虎门','万江','大朗']
},
'安徽' : {
'合肥' : ['蜀山','庐阳','包河','经开','新站'],
'芜湖' : ['镜湖','鸠江','无为','三山','南陵'],
'蚌埠' : ['蚌山','龙子','淮上','怀远','固镇']
},
'浙江' : {
'杭州' : ['西湖','江干','下城','上城','滨江'],
'宁波' : ['海曙','江东','江北','镇海','余姚'],
'温州' : ['鹿城','龙湾','乐清','瑞安','永嘉']
}
}
def menu1():
    while 1:
        province_list = list(zone.keys())
        print('省级'.center(50,'*'))
        for i in province_list:
            print(province_list.index(i)+1,i)
        a=input("请输入以上你喜欢的省的编号,按q/Q退出,按b/B返回上一级:").strip()
        if a=='q' or a=='Q':
            quit()
        if a=='b' or a=='B':
            print("此处是一级菜单,无法返回!")
            continue
        if a=='1' or a=='2' or a=='3' or a=='4' or a=='5' :
            a1=int(a)-1
            a11=province_list[a1]
            print("你喜欢的省是%s"%a11)
            return a11

        else:
            print("您输入的数字不合法,请重试!")


def menu2(a111):
    while 1:
        print('该省下的市级'.center(46,'*'))
        city_list=list(zone[a111].keys())
        for j in city_list:
            print(city_list.index(j)+1,j)
        b=input("请输入以上你喜欢的市的编号,按q/Q退出,按b/B返回上一级:").strip()
        if b=='q' or b=='Q':
            quit()
        if b=='b' or b=='B':
            menu1()
            continue
        if b=='1' or b=='2' or b=='3' or b=='4' or b=='5' :
            b1=int(b)-1
            b11=city_list[b1]
            print("你喜欢的市是%s"%b11)
            return b11

        else:
            print("您输入的数字不合法,请重试!")

def menu3(a111,b111):
    while 1:
        print('该市下的县级'.center(46,'*'))
        town_list=zone[a111][b111]
        for k in town_list:
            print(town_list.index(k)+1,k)
        c=input("请输入以上你喜欢的县的编号,按q/Q退出,按b/B返回上一级:").strip()
        if c=='q' or c=='Q':
            quit()
        if c=='b' or c=='B':
            menu2(a111)
            continue
        if c=='1' or c=='2' or c=='3' or c=='4' or c=='5' :
            c1=int(c)-1
            c11=town_list[c1]
            print("你喜欢的县是%s"%c11)
            return c11
        else:
            print("您输入的数字不合法,请重试!")


sheng=menu1()
shi=menu2(sheng)
xian=menu3(sheng,shi)
print("so,你希望生活在%s省%s市%s县"%(sheng,shi,xian))

 

python参数

一、位置参数 调用函数时根据函数定义的参数位置来传递参数。 #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_dict = {1...

阅读全文

zabbix–api接口

Zabbix_api4.4官方文档 Zabbix_api3.4中文文档 一、初识api(zabbix4.4.4版本) API(Application Programming Interface,应用程序编程接口)是一些预先定义的...

阅读全文

将配置文件构造成json格式让zabbix自动发现监控项

一、简单介绍 上文我们使用了zabbix的自动发现的监控来监控服务的端口,重点写了zabbix的发现的一个原理和过程,但是实际上我们服务器的配置是比较复杂的,而...

阅读全文

欢迎留言