一、写一个6位随机验证码程序(使用 random模块),要求验证码中至少包含一个数字、一个小写字母、一个大写字母

import random
import string
#help(string)
code = []
code.append(random.choice(string.ascii_lowercase))  # 保证验证码中有一个小写字母
code.append(random.choice(string.ascii_uppercase))  # 保证验证码中有一个大写字母
code.append(random.choice(string.digits)) # 保证验证码中有一个数字
while len(code) < 6:
    code.append(random.choice(string.ascii_lowercase+string.ascii_uppercase+string.digits))
   
print(code)
q_code = "".join(code)
print(q_code)

---------------------------------------

二、写一个用户登录验证程序,文件如下1234.json

1234.json

{"expire_date":"2021-01-01","id":"1234","status":0, "pay_day":22, "password":"abc"}

-  用户名为json的文件名

- 判断是否过期,与expire_date做比较

- 登陆成功后打印登陆成功,三次登陆失败,status值改为1,并且锁定账号

-----------------------------------------------------------------

import os
import time
import json
count = 0
exit_flag = False
while count < 3:
    user = input("请输入用户名:")
    f = user.strip()+'.json'
    if os.path.exists(f):
        fp = open(f, "r+", encoding="utf-8")
        j_user = json.load(fp)
        if j_user['status'] == 1:
            print("账号已经锁定")
            break
        else:
            expire_date = j_user['expire_date']
            current_st = time.time()
            expire_st = time.mktime(time.striptime(expire_dt, "%Y-%m-%d"))
           
            if current_st > expire_st:
                print("用户已经过期")
                break
            else:
                while count < 3:
                    pwd = input("请输入密码: ")
                    if pwd.strip() == j_user['passwd']:
                        print("登陆成功")
                        exit_flag = True
                        break
                    else:
                        if count == 2:
                            print("用户登录已经超过3次,锁定账号")
                            j_user['status'] = 1
                            fp.seek(0)
                            fp.truncate() # 清空文件内容
                            json.dump(j_user, fp)
                    count += 1
    if exit_flag:
        break
    else:
        print("用户不存在")
        count += 1

Python---进阶---常用模块os、jso的更多相关文章

  1. Python进阶--常用模块

    一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...

  2. Python基础-常用模块OS

    模块:一个python文件就是一个模块,模块分三种: 1,标准模块,也就是python自带的模块,例如import  time,random,string等等 2,第三方模块,这种模块需要自己安装才能 ...

  3. python的常用模块之collections模块

    python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...

  4. Python进阶----pymysql模块的使用,单表查询

    Python进阶----pymysql模块的使用,单表查询 一丶使用pymysql ​   ​   1.下载pymysql包: pip3 install pymysql ​​   ​   2.编写代码 ...

  5. Python进阶(八)----模块,import , from import 和 `__name__`的使用

    Python进阶(八)----模块,import , from import 和 __name__的使用 一丶模块的初识 #### 什么是模块: # 模块就是一个py文件(这个模块存放很多相似的功能, ...

  6. python - 常用模块 os, sys

    常用模块: os(处理文件和目录), sys(sys 模块包含了与 Python 解释器和它的环境有关的函数.) sys.argv 变量是一个字符串的 列表.特别地,sys.argv 包含了 命令行参 ...

  7. python之常用模块一(time、random、os、sys)

    摘要:时间模块time .随机模块random .os模块.sys模块 一.时间模块 三种格式 时间戳时间:浮点数 单位为秒 时间戳起始时间: 1970.1.1 0:0:0 英国伦敦时间 1970.1 ...

  8. Python之常用模块(re,时间,random,os,sys,序列化模块)(Day20)

    一.时间模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 在Python中表示时间的三种方式:时间戳,元组(s ...

  9. [Python Day5] 常用模块

    目录: 1.模块介绍 2.time & datetime 3.random 4.OS 5.sys 6.shutil 7.json & pickle 8.shelve 9.xml 处理 ...

  10. Python之路-python(常用模块学习)

    模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib re正则表达式 1.模块 ...

随机推荐

  1. Web.Config全攻略

    一.认识Web.config文件   Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方 ...

  2. apache-httpd2.4编译安装

    centos 6 编译安装httpd-2.4 centos6yum安装的apr版本已经不适用httpd-2.4版本了.所以,需要源码编译apr以及apr-util1. 下载源码:cd /usr/loc ...

  3. robot framework断言

    一.基础 RobotFramework带有丰富的系统关键,使用时无需导入,直接使用,为写自动化用例带来了极大的方便:不能停留在知道或者是会得程度,只有熟练使用各关键字,才能提升自动化用例的写作效率.下 ...

  4. vue树状结构(tree)

    <!DOCTYPE html> <html> <head> <title></title> <style> body { fon ...

  5. C 语言中的预处理

    C 语言中以 # 开头的就是预处理指令,例如 #include . 预处理指令的用途 所有的预处理指令都会在 GCC 编译过程的预处理步骤解析执行,替换为对应的内容.在下一步编译过程中,看不到任何预处 ...

  6. 14.使用Crunch创建字典----Armitage扫描和利用----设置虚拟渗透测试实验室----proxychains最大匿名

    使用Crunch创建字典 kali自带的字典 usr/share/wordlists cd Desktop mkdir wordlists cd wordlists/ crunch --help cr ...

  7. 【Linux开发】Linux V4L2驱动架构解析与开发导引

    Linux V4L2驱动架构解析与开发导引 Andrew按:众所周知,linux中可以采用灵活的多层次的驱动架构来对接口进行统一与抽象,最低层次的驱动总是直接面向硬件的,而最高层次的驱动在linux中 ...

  8. Golang基本类型整理

    总是用的用的就模糊了,不知道基本的类型有哪些,看来要反反复复弄几次. Golang基本类型整理 基本类型以及定义变量需要注意的 对于基本类型的介绍,感觉这个博客讲的比较透彻,基本上都是从源码的角度来入 ...

  9. SVN与Git的优点差异比较

    今天自己还是很有进步的,但是 下午的进度很慢,学习还是得回去,不能在工位进行 在网上看到一篇有关于SVN与Git的区别 复制下来了,以后可以经常看看 一. 集中式vs分布式 1. Subversion ...

  10. abstract关键字及static关键字

    抽象关键字abstract 抽象类 在类前加上关键字abstract可以将此类变成抽象类.抽象类不允许通过new关键字实例化,但是可一通过其子类向上转型为其创建实例. 抽象类可以有抽象方法,也可以没有 ...