1. 递归

    • 递归调用

      • 一个函数,调用了自身,称为递归调用

      • 递归函数:一个会调用自身的函数称为递归函数

      • 凡是循环能干的事,递归都能干

    • 方式:

      • 写出临界条件

      • 找这一次和上一次的关系

      • 假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果

  2. 栈和队列

      • 存取数据的特点: 先进后出

      • 模拟栈结构

        • stack = []

      • 压栈(向栈里存数据)

        • stack.append("A")

        • stack.append("B")

      • 出栈(向栈里取数据)

        • stack.pop()

    • 队列

      • 存取数据的特点: 先进先出

      • 导入库 import collections

      • queue = collections.deque()

        • 创建一个队列

      • 进队(存数据)

        • queue.append("A")

        • queue.append("B")

      • 出队(取数据)

        • resl = queue.popleft()

    • 递归目录遍历 见代码

    • 栈模拟递归遍历目录(深度遍历) 见代码

    • 队列模拟递归遍历目录(广度遍历) 见代码

    • 时间相关模块

      • 引入 import time 模块

      • time

        • UTC(世界协调时间): 格林尼治天文时间,世界标准时间,再中国来说是UTC+8

        • DST(夏令时):是一种节约能源而人为规定时间制度,在夏季调快1个小时

        • 时间的表示形式

          • 时间戳

            • 以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1日零晨开始算起

          • 元组

            • 一种Python的数据结构表示,这个元组有9个整型内容

            • year

            • month

            • day

            • hours

            • minutes

            • seconds

            • weekdays

            • Julia day

            • flag (-1 或 1 或0)

          • 格式化字符串

            • %a 本地(locale) 简化星期名称

            • A 本地完整星期名称

            • %b 本地简化月份名称

            • %B 本地完整月份名称

            • %c 本地相应的日期和时间表示

            • %d 一个月中的第几天(01~31)

            • %H 一天中的第几个小时(24小时制,00~23)

            • %I 第几个小时(12小时制,01~12)

            • %j 一年中的第几天 (001~366)

            • %m 月份(01~12)

            • %M 分钟数(00~59)

            • %p 本地am或者pm的相应符

            • %S 秒(01~61)

            • %U 一年中的星期数。(00~53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在第0周

            • %w 和%U基本相同,不同的是%W以星期一为一个星期的开始

            • %W 和%U 基本相同,不同的是%W以星期一为一个星期的开始

            • %x 本地相应日期

            • %X 本地相应时间

            • %y 去掉世纪的年份(00~99)

            • %Y 完整的年份

            • %Z 时区的名字(如果不存在为空字符)

            • %% '%'字符

        • time时间模块的用法

          • c=time.time() 返回当前时间的时间戳,浮点数形式,不需要参数

          • 将时间戳转为UTC时间元组

            • t = time.gmtime(c)

          • 将时间戳转为本地时间元组

            • b = time.localtime(c)

          • 将本地时间元组转成时间戳

            • m = time.mktime(b)

          • 将时间元组转成字符串

            • s=time.asctime(b)

            • 值为 Thu Sep 26 16:31:19 2019

          • 将时间戳转为字符串 相当于 time.asctime(time.localtime(time.time()))

            • p=time.ctime(c)

            • 值为 Thu Sep 26 16:31:19 2019

          • 将时间元组转换成给定格式的字符串,参数2为时间元组,如果没有参数2,默认转当前时间

            • q =time.strftime("%Y-%m-%d %H:%M:%S",b)

            • 值为 2019-09-26 16:31:19

          • 将时间字符串转为时间元组

            • w = time.strptime(q, "%Y-%m-%d %X")

          • 延迟一个时间,整型或者浮点型

            • time.sleep(4)

          • 返回当前程序的cup时间

            • Unix始终返回全部的运行时间

            • windows 从第二次开始,都是以第一个调用此函数的开始时间戳作为基数

            • time.clock() 现在版本不支持

            • time.perf_counter() 现在版本支持这个

      • datetime模块

        • 概述

          • datetime 比time高级了不少,可以理解为datetime基于time进行了封装,提供了各位使用的函数,datetime模块的接口更直观,更容易调用

        • 模块中的类:

          • datetime

            • 同时有时间和日期

          • timedelta

            • 主要用于计算时间的跨度

          • tzinfo

            • 时区相关

          • time

            • 只关注时间

          • date

            • 只关注日期

        • datetime时间模块的用法

          • 获取当前时间

            • d1 = datetime.datetime.now()

            • print(d1)

          • 获取指定时间

            • d2 = datetime.datetime(1999,10,1,10,28,25,123456)

            • print(d2)

          • 将时间转为字符串

            • d3 = d1.strftime("%y-%m-%d %X")

            • print(d3)

          • 将格式化字符串转为datetime对象

            • 注意:转换的格式要与字符串一致

            • d4 = datetime.datetime.strptime(d3,"%y-%m-%d %X")

            • print(d4)

          • datetime可做数学运算

            • d5 = datetime.datetime(1999,10,1,10,28,25,123456)

            • d6= datetime.datetime.now()

            • d7 = d6-d5

            • print(d7)

            • 取到间隔的天数

              • print(d7.days)

            • 取到间隔天数除外的秒数

              • print(d7.seconds)

      • calendar模块(日历模块)

        • 导入模块 import calendar

        • calendar模块的用法

          • 返回指定某年某月的日历

            • s1 = calendar.month(2017,7)

            • print(s1)

          • 返回指定年的日历

            • s2 = calendar.calendar(2017)

            • print(s2)

          • 判断是否是闰年, 是闰年返回True 否则返回False

            • s3 = calendar.isleap(2000)

            • print(s3)

          • 返回某个月的weekday的第一天和这个月的所有的天数

            • s4 = calendar.monthrange(2017,7)

            • print(s4)

          • 返回某个月以每一周为元素的列表

            • s5 = calendar.monthcalendar(2017,7)

            • print(s5)

os模块

  • os: 包含了普遍的操作系统的功能

  • 导入 import os

  • os.name

    • 获取操作系统类型 nt-> windows posix->Linux、Unix或Mac OS X

  • os.uname()

    • 打印操作系统详细的信息(windows 不支持)

  • os.environ()

    • 获取操作系统中的环境变量

    • os.environ.get("APPDATA") 获取指定环境变量

  • os.curdir

    • 获取当前目录 ./a/

  • os.getcwd()

    • 获取当前工作目录,即当前python脚本所在的目录

  • os.listdir(path)

    • path为目录

    • 以列表的形式返回指定目录下的所有的文件

  • os.mkdir("sunck")

    • 在当前目录下创建新目录

    • ()里面也可以写绝对路径

  • os.rmdir("sunck")

    • 删除目录

    • ()里面也可以写绝对路径

  • os.stat(path)

    • path为路径

    • 获取文件属性

  • os.rename(old,new)

    • 重命名

    • old为旧目录名字,new为新目录名字

  • os.remove(path)

    • path为路径

    • 删除普通文件

  • os.system(“notepad”)

    • 运行shell命令(打开记事本)

  • os.system("write")

    • 打开写字板

  • os.system("mspaint")

    • 打开画板

  • os.system("msconfig")

    • 打开系统设置

  • os.system("shutdown -s -t 500")

    • 关机

  • os.system("shutdown -a")

    • 取消自动关机

  • os.system("taskkill /f /im notepad.exe")

    • 关闭记事本

    • 想关闭哪个 改notepad就行

  • 有些方法存在os模块里,还有些存在于os.path里

    • os.path.abspath(path)

      • 查看当前的绝对路径

      • . 为当前路径

      • path为文件名或者目录名

    • os.path.join(p1,p2)

      • 拼接路径

      • 注意:参数2里开始不要有斜杠

      • p1,p2为路径

    • os.path.split(path2)

      • 拆分路径

      • path2 为路径

      • os.path.splitext(path2)

        • 获取扩展名

    • os.path.isdir(path2)

      • 判断是否是目录 是目录返回True 不是目录返回False

    • os.path.isfile(path2)

      • 判断文件是否存在

    • os.path.exists(path2)

      • 判断目录是否存在

    • os.path.getsize(path2)

      • 获取文件大小(字节)

    • os.path.dirname(path2)

      • 获取文件的目录

    • os.path.basename(path2)

      • 获取文件的名

递归&时间模块&os模块的更多相关文章

  1. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  2. day 20 collection模块 time 模块 os 模块

    一.collection模块 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要 ...

  3. python常用模块: random模块, time模块, sys模块, os模块, 序列化模块

    一. random模块  import random # 任意小数 print(random.random()) # 0到1的任意小数 print(random.uniform(-10, 10)) # ...

  4. day13 函数模块之序列化 random 模块 os模块 sys模块 hashlib模块 collections模块

    json import json dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串 ...

  5. random模块 os模块

    # random# import random# random.random() # 大于0且小于1之间的小数# random.randint() # 大于等于1且小于等于3之间的整数# random ...

  6. Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块

    Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: ​ 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...

  7. json模块 os模块 文件加密

    目录 一:random随机模块 二:os模块 三:文件处理选择任意视频 四:sys模块 五:实现文件执行加密操作 六:json 序列化模块 七:json序列化 反序列化 八:json 文件写读方式 九 ...

  8. random 模块 时间模块(time) sys模块 os模块

    random  模块 1.随机小数 random.random()  0-1内的随机小数 random.uniform(1,5)  1-5范围内的随机小数 2.随机整数 random.randint( ...

  9. day 18 random模块 时间模块 sys模块 os模块

    import random 利用random模块可以进行从一个列表或者数字范围之间随机取出一个数字 # 取随机小数 : 数学计算 print(random.random()) # 取0-1之间的小数 ...

随机推荐

  1. day20 BBS前奏

    Django的ORM操作 1.FK 2.M2M 3.O2O 4.CURD 5.aggregate聚合 6.F 7.Q FORM表单 Django form model form views介绍 adm ...

  2. 洛谷3067 BZOJ 2679题解(折半搜索)

    传送门 BZOJ传送门(权限题) 看到n小于20,就可以想到搜索 所有的数要么在集合a中,要么在集合b中,要么都不在 可是3^n复杂度会炸,我们考虑优化 可以利用折半搜索,将前面一半的所有可能情况与后 ...

  3. HZOJ 简单的期望

    性质:一个数分解质因数后2的次数=二进制下末尾连续0的个数. 乘2比较好考虑,比较恶心的是+1.一个$k*2^0$的数+1后可能会出现很多情况.但是k这个数表示不出来. 但是加的操作最多有200次,也 ...

  4. 新xcode的literal syntax是什么

    New Objective-C Literal Syntax for NSArray, NSDictionary 是以@字符开始的方式简单地创建数组.字典.NSNumber常量. 代码如下: NSNu ...

  5. ELK之开心小爬爬

    1.开心小爬爬 在爬取之前需要先安装requests模块和BeautifulSoup这两个模块 ''' https://www.autohome.com.cn/all/ 爬取图片和链接 写入数据库里边 ...

  6. Uva 10074【递推dp】

    UVa 10074 题意:求01矩阵的最大子0矩阵. http://www.csie.ntnu.edu.tw/~u91029/MaximumSubarray.html#2 这里说的很清楚.先求Larg ...

  7. Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)

    研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户能够清晰的看到先启动竖屏(过程1)再切换到横屏的过程,因为灭屏的时候onSaveInstanceState()保存的时横 ...

  8. Java练习 SDUT-2761_编码

    编码 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给你一个由大写字母组成的组成的字符串,你可以用如下规则对其进行编码 ...

  9. java future模式 所线程实现异步调用(转载

    java future模式 所线程实现异步调用(转载) 在多线程交互的中2,经常有一个线程需要得到另个一线程的计算结果,我们常用的是Future异步模式来加以解决.Future顾名思意,有点像期货市场 ...

  10. 学习CSS预处理器Less

    1.Sass与Less的区别:Sass与Less的区别 2.Less的使用:Less的使用 3.Less的相关网址:Less.js.Less中文网 Less的HSL函数-lighten():HSL函数 ...