s14 python3 day1 作业2

  需求:

模拟验证用户输入密码登录。要求有3次机会,如果用户只输错密码,则三次后锁定,下次再登陆则提示账号锁定。

如果用户名密码正确,则提示登陆成功。

做作业:

使用两个文本文件来分别存放用户信息和锁定信息

用户和密码列表

[[email protected] day1]# cat user_list.txt 
liuxiaolu 123456
liuxiaogou 888888
liuxiaomao 654321

黑名单列表

[[email protected] day1]# cat user_lock.txt

程序代码

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Author: leilei

# 定义变量
tries = 0 #尝试次数
tries_user = 0 #
account_flag = 0

while tries < 3:
    user_list = open(‘/dbdata/pythons/s14/day1/user_list.txt‘,‘r‘)
    user_lock = open(‘/dbdata/pythons/s14/day1/user_lock.txt‘, ‘r‘)
    user_name = input("plz enter ur name:")
    user_pass = input("plz enter ur pass:")

    for _user_lock in user_lock.readlines():
        _user_block = _user_lock.strip().split()
        if user_name == _user_block[0]:
            print("this account has been locked!")
            account_flag = 1
            tries = 4
            break

    if account_flag == 0:
        for _user_name in user_list.readlines():
            _user = _user_name.strip().split()
            if user_name == _user[0] and user_pass == _user[1]:
                print("welcome to login...,",user_name)
                tries = 4
                break
            elif user_name == _user[0] and user_pass != _user[1]:
                print("wrong username or password!")
                tries_user = tries_user + 1
                break
        else:
            print("wrong username or password!")
        tries = tries + 1
        if tries < 4:
            print("u have",3-tries,"chances left!\n")
        if tries_user == 3:
            user_lock = open(‘/dbdata/pythons/s14/day1/user_lock.txt‘, ‘a‘)
            user_lock.write(user_name+"\n")
            user_lock.close()
            print("lots of atempts, ur account has been locked.")

user_list.close()
user_lock.close()

测试

[[email protected] day1]# ./zuoye2.py   --测试账号锁定
plz enter ur name:liuxiaomao
plz enter ur pass:1
wrong username or password!
u have 2 chances left!

plz enter ur name:liuxiaomao
plz enter ur pass:2
wrong username or password!
u have 1 chances left!

plz enter ur name:liuxiaomao
plz enter ur pass:3
wrong username or password!
u have 0 chances left!

lots of atempts, ur account has been locked.  --提示被锁定
[[email protected] day1]# cat user_lock.txt
liuxiaomao
[[email protected] day1]# ./zuoye2.py  --被锁定无法登陆
plz enter ur name:liuxiaomao
plz enter ur pass:11
this account has been locked!
[[email protected] day1]# ./zuoye2.py  --测试成功登陆
plz enter ur name:liuxiaolu
plz enter ur pass:123456
welcome to login..., liuxiaolu
[[email protected] day1]# ./zuoye2.py  --测试密码错误
plz enter ur name:liuxiao
plz enter ur pass:1
wrong username or password!
u have 2 chances left!

plz enter ur name:liuxiao
plz enter ur pass:2
wrong username or password!
u have 1 chances left!

plz enter ur name:liuxiao
plz enter ur pass:3
wrong username or password!
u have 0 chances left!
时间: 2024-12-28 18:16:03

s14 python3 day1 作业2的相关文章

Day1作业要求

Day1作业 作业需求 博客 模拟登录 三级菜单 博客地址 杨振伟Day1博客地址 模拟登录 1.程序说明 实现功能如下 用户输入密码,密码验证后登录成功 用户登录成功后提示登录信息 用户输入3次错误密码后锁定 2.程序测试账号 测试账号:admin 测试密码:redhat 3.程序测试 python day01_login_03.py 三级菜单 1.程序说明 实现功能如下 运行程序输出第一级菜单 选择一级菜单某项,输出二级菜单,同理输出三级菜单 菜单数据保存在文件中 2.程序测试 python

day1作业--登录入口

作业概述: 编写一个登录入口,实现如下功能: (1)输入用户名和密码 (2)认证成功后显示欢迎信息 (3)输错三次后锁定 流程图: readme: 1.程序配置文件: 黑名单文件blacklist.txt(可以存在,可以不存在) 白名单文件whitelist.txt存在,内容如下: zhangsan,1234 wang,1234 ding,1234 2.输入密码的时候不显示 代码: 1 #coding=utf-8 2 import os 3 import getpass 4 5 BlackLis

day1 作业编写登录窗口

作业一:编写登录接口 (1)输入用户名和密码: (2)认证成功后显示欢迎信息: (3)输错三次后锁定. 思路:我们知道,要想让程序记住之前输入多少次,锁定用户,那么可以使用数据库来保存用户的状态,然而,数据库的知识还没有学习,因此我们要使用文件来保存文件. readme: 1.让用户输入用户名,首先在锁定列表中进行查找,查看用户是否进行锁定,如果用户没有在锁定文件中,那么在尝试看用户是否在用户文件中,如果输入的用户在文件中,则让用户输入密码,对密码进行判断,如果密码等于对应的用户的话就满足认证,

day1作业二:多级菜单

    作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置标识符active用来循环: (2)生成存储省市的字典,d1 = {1: '河南', 2: '广东', 3: '湖南'}; (3)用户输入查询编码,如果用户输入q退出循环:如果用户输入小于1或大于3则重新输入:输入编码在range(1,4)中,则输出省,并继续循环; (4)生成存储市的字典d2 =

day1作业--登录接口

作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定     知识: 1.循环的使用: 2.continue,break在循环中中断的作用: 3.文件的写入,读取: 4.各基础知识的穿插应用     一.程序架构图     二.程序流程图如下:     三.具体代码及思路如下:     1.导入模块,及主程序页面 import os,json,random def main_show(): '''进入主页展示''' login_message = ''' ---------

Python Day1 作业

作业二:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 FlowChart: 代码: #!usr/bin/env python # -*- coding:utf-8 -*- # Author: Wayne Zhong user = 'Wayne' pwd = '123465' f = open('status.txt') if f.read() == 'Y': for i in range(3): username = input('Input username:') pa

day1作业--三级菜单

作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu.py是显示三级菜单的程序主要功能: 显示一级(区域).二级(省).三级菜单(市.区),三级菜单再选泽可以显示市区的人口和面积(为了节省时间,随意指定的),在任意级都可以返回上一级,或者退出 三级菜单和市区的人口和面积用字典表示: China_map={ '华北':{'北京':['东城','西城','朝阳','

DAY-1作业

// //  main.m //  DAY-11作业 // //  Created by lanouhn on 15/1/27. //  Copyright (c) 2015年 lanouhn. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { //    1. (**)输入一个数组长度,动态创建数组,所有元素随机生成,输出元素 //    中的

day1作业:编写登录窗口一个文件实现

思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则: 1)认证流程参考的是Linux的登录:当你输入完用户名密码后再验证用户名是否存在用户是否被锁定,然后在验证密码是否正确,如果验证不过去只会告诉你验证失败,而不告诉你到底是用户名错误还是密码错误,增加了暴力破解的难度: 2)关于输入错误次数的计数和锁定,我参考的是银行和支付宝的做法,也就是只关心你输错了多少次,不关心输对了多少次,也就是说输错了两次,第三次输对了,前面的计数不清零,也就是你今天输入了1