万科笔试题解法--python

例如{"username":"admin","passwd":"123456"}
1.设计1个登陆的程序, 不同的用户名和对成密码存在个字典里面, 输入正确的用户名和密码去登陆,
2.首先输入用户名,如果用户名不存在或者为空,则一直提示输入正 确的用户名
3.当用户名正确的时候,提示去输入密码,如果密码跟用户名不对应, 则提示密码错误请重新输入。
4.如果密码输入错误超过三次,中断程序运行。
5.当输入密码错误时,提示还有几次机会
6用户名和密码都输入正确的时候,提示登陆成功!

柠檬班解法一:
def user_login():
    login_info={"username":"admin","passwd":"123456"}
    name=input("请输入你的登录名:")
    while name!=login_info['username']:
        name=input("你刚刚输入的用户名不存在,请重新输入:")

    password=input("请输入你的密码:")
    pwd_num=3#初始值
    while password!=login_info['passwd']:#123456
        pwd_num-=1#每输出一次就减去1
        if pwd_num>0:
            print("你还有%s次密码输入的机会"%pwd_num)#格式化输出
            password=input("你刚刚输入的密码错误,请重新输入:")
            continue
        elif pwd_num==0:
            print("你输入密码错误过多,用户已经被冻结")
            break
    if name==login_info['username'] and password==login_info['passwd']:
        print("登录成功!")
        
user_login()

柠檬班解法二:
def user_login():
    info={"username":"admin","passwd":"123456"}
    name=input("请输入登录用户名:")
    while name!=info['username'] or name=='':
        name=input("输入错误,请输入登录用户名:")

    num=3
    while num>0:
        pwd=input("请输入登录密码:")
        if pwd==info['passwd']:
            print("登录成功!")
            num=0#此处重置num的值
        elif pwd=='' or pwd!=info['passwd']:
            num-=1
            if num==0:
                print("输入错误的密码次数超过3次,账户已被冻结")
            else:
                print("密码不正确!你还有%s次密码输入机会"%num)

user_login()
我的解法:
user_1 = {'username': 'admin', 'password': 'admin123'}
user_2 = {'username': 'erduo', 'password': 'erduo123'}
user_3 = {'username': 'guest', 'password': 'guest123'}
users = [user_1, user_2, user_3]

active_2 = True
while active_2:
    username = input('请输用户名:')
    for i in range(len(users)):
        u = users[i]['username']
        p = users[i]['password']
        if username == u:
            active_1 = True
            num = 3
            while active_1:
                password = input('请输入密码:')
                if password == p:
                    print('登录成功 ')
                    active_1 = False
                else:
                    num = num - 1
                    print('密码错误,还有' + str(num) + '次机会')
                    if num == 0:
                        active_1 = False
            active_2 = False
            break
        else:
            print('请输入正确用户名')
            break

HC写的--->加上我的,,放出来,,接受批评批评!!不接受点赞哼!

user_1 = {'username':'admin','password':'123456'}
user_2 = {'username':'erduo','password':'123456'}
user_3 = {'username':'guest','password':'123456'}
users = [user_1,user_2,user_3]

while True:
    username = input("输入账号:")
    for user in users:
        if username == user['username']:
            num = 3
            while True:
                password = input('请输入密码:')
                if password == user['password']:
                    print('登录成功')
                    break
                else:
                    num = num - 1
                    print('密码错误,还有'+str(num)+'次机会')
                    if num == 0:
                        break
            break

    else:
        print('账号不存在')
        continue
    break

羊羽衣的解法:
if __name__ == '__main__':
    # session 里面的 dict 可以自己添加,作为已有的用户信息
    session = [{"username": "admin", "password": "123456"},
           {"username": "jack", "password": "123"},
           {"username": "tom", "password": "456"},
           {"username": "amy", "password": "135"},
           ]
while True:
    while True:
        username = str(input('请输入用户名: '))
        for user_information in session:
            if username == user_information['username']:
                password = user_information['password']
                break
        else:
            continue
        count = 3
        for i in range(count):
            input_password = str(input('请输入密码: '))
            if input_password == password:
                break
            else:
                if count - i - 1 != 0:
                    print('密码错误,请重新输入密码 --> 还有{}次机会'.format(count - i - 1))
        else:
            break
        print('登录成功')
        break
    break

ps:之所以放这么多代码就是要看晕你~!




猜你喜欢

转载自blog.csdn.net/z_erduo/article/details/80997442