递归&时间模块&os模块
递归
递归调用
一个函数,调用了自身,称为递归调用
递归函数:一个会调用自身的函数称为递归函数
凡是循环能干的事,递归都能干
方式:
写出临界条件
找这一次和上一次的关系
假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果
栈和队列
栈
存取数据的特点: 先进后出
模拟栈结构
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模块的更多相关文章
- 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)
认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...
- day 20 collection模块 time 模块 os 模块
一.collection模块 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要 ...
- python常用模块: random模块, time模块, sys模块, os模块, 序列化模块
一. random模块 import random # 任意小数 print(random.random()) # 0到1的任意小数 print(random.uniform(-10, 10)) # ...
- day13 函数模块之序列化 random 模块 os模块 sys模块 hashlib模块 collections模块
json import json dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串 ...
- random模块 os模块
# random# import random# random.random() # 大于0且小于1之间的小数# random.randint() # 大于等于1且小于等于3之间的整数# random ...
- Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块
Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...
- json模块 os模块 文件加密
目录 一:random随机模块 二:os模块 三:文件处理选择任意视频 四:sys模块 五:实现文件执行加密操作 六:json 序列化模块 七:json序列化 反序列化 八:json 文件写读方式 九 ...
- random 模块 时间模块(time) sys模块 os模块
random 模块 1.随机小数 random.random() 0-1内的随机小数 random.uniform(1,5) 1-5范围内的随机小数 2.随机整数 random.randint( ...
- day 18 random模块 时间模块 sys模块 os模块
import random 利用random模块可以进行从一个列表或者数字范围之间随机取出一个数字 # 取随机小数 : 数学计算 print(random.random()) # 取0-1之间的小数 ...
随机推荐
- [框架]eclipse搭建ssm框架 一 标签: eclipsetomcat框架 2017-03-25 21:28 1085人阅读 评论(
虽然现在也做过一些项目,但是自己从头搭起来的框架几乎没有,所以这两天自己搭了一下ssm的框架,下面写一下框架的搭建过程.并且给出增删改查四条线来方便大家熟悉代码. 环境准备 maven3.2.3 ec ...
- 在linux里如何建立一个快捷方式,连接到另一个目录
用软链接 用法:ln -s 源目录 目标快捷方式, 比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是 ln -s /home/LXBC /etc/LXBC ...
- List容器-LinkedList链表
LinkedList--链表 特点: 删除,增加 用LinkedList性能高 层次查找不适合 查询用ArrayList 数组下标查找 插入和删除慢缺点是要做移位操作 总结:Link ...
- weixin 微信开放平台 微信公众平台
官网地址入口 微信小程序 https://mp.weixin.qq.com/ appid and openid not match 1.appid :是公众号的ID. 2.openid:关注公众号生成 ...
- Codeforces 662D International Olympiad【贪心】
比赛的时候后缀长度在4位以内的时候分类讨论了一下,其实他们完全是一个套路的..并不需要讨论. 然后没有考虑前导0的情况,就wa了.. 题目链接: http://codeforces.com/probl ...
- Knative 初体验:Eventing Hello World
作者 | 阿里云智能事业群高级开发工程师 元毅 基于事件驱动是Serveless的核心功能之一,通过事件驱动服务,满足了用户按需付费(Pay-as-you-go)的需求.在之前的文章中我们介绍过 Kn ...
- oracle函数 userenv(parameter)
[功能]返回当前会话上下文属性. [参数]Parameter是参数,可以用以下参数代替: Isdba:若用户具有dba权限,则返回true,否则返回false. Language:返回当前会话对应的语 ...
- Libev源码分析03:Libev使用堆管理定时器
Libev中在管理定时器时,使用了堆这种结构,而且除了常见的最小2叉堆之外,它还实现了更高效的4叉堆. 之所以要实现4叉堆,是因为普通2叉堆的缓存效率较低,所谓缓存效率低,也就是说对CPU缓存的利用率 ...
- HZOJ 寿司
这题也是挺神仙的,现在O(n)的解法还没打出来,只是用O(nlogn)卡过去了(理论上可以过),sdfz某大佬用三分拿到了65分…… 考试连暴力都没打出来…… n2暴力T40: 首先将环拆成链,我们可 ...
- @noi.ac - 507@ 二分图最大权匹配
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一天你学了一个能解决二分图最大权匹配的算法,你决定将这个算法应 ...