标签:time;radom
#递归:
#在函数的内部调用自己-----递归
#递归的最大深度:998
#小例子
#猜年龄
#alex多大了,alex比wusir 大两岁 40 +2 +2
#wusir多大了,wusir比金老板大两岁 40+2
#金老板多大了, 40
# age(1)
# n = 1 age(2)+2
# n = 2 age(3)+2
# n = 3 age(4) = 40
def age(n):
if n ==3:
return 40
else:
return age(n+1)+2
print(age(1))
# #n = 1
# def age(1):
# if 1 ==3:
# return 40
# else:
# age(2)+2
# #n=2
# def age(2):
# if 2 ==3:
# return 40
# else:
# age(3)+2
# #n = 3
# def age(3):
# if 3 ==3:
# return 40
l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def cal(l,num = 66):
length = len(l)
mid = length//2
if num > l[mid]:
l = l[mid+1:]
cal(l,num)
elif num < l[mid]:
l = l[:mid]
cal(l,num)
else:
print('找到了',l[mid],mid)
cal(l,66)
l =[2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能变
def cal(l,num,start,end):
mid = (end -start) //2 +start #0 25-1 /2 12
if l[mid] >num:
start =0
end = mid -1
cal(l,num,start,mid-1)
elif l[mid] < num: #13 24
start = mid+1
end= len(l) -1
cal(l,num,mid+1,end)
else:
print('找到了',mid,l[mid])
cal(l,66,0,len(l))
print(l.index(66))
不能算出不存在的数字
l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能变
def cal(l,num,start,end):
if start <=end:
mid = (end -start) //2 +start #0 25-1 /2 12
if l[mid] >num:
# start =0
# end = mid -1
cal(l,num,start,mid-1)
elif l[mid] < num: #13 24
# start = mid+1
# end= len(l) -1
cal(l,num,mid+1,end)
else:
print('找到了',mid,l[mid])
else:
print('没找到')
cal(l,60,0,len(l))
改成return
l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能变
def cal(l,num,start,end):
if start <=end:
mid = (end -start) //2 +start #0 25-1 /2 12
if l[mid] >num:
# start =0
# end = mid -1
return cal(l,num,start,mid-1)
elif l[mid] < num: #13 24
# start = mid+1
# end= len(l) -1
return cal(l,num,mid+1,end)
else:
return mid
else:
return '没找到'
print(cal(l,66,0,len(l)))
修改参数:
l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能变
def cal(l,num,start=0,end=None):
# if end is None:end = len(l)-1
end = len(l) -1 if end is None else end
if start <=end:
mid = (end -start) //2 +start #0 25-1 /2 12
if l[mid] >num:
# start =0
# end = mid -1
return cal(l,num,start,mid-1)
elif l[mid] < num: #13 24
# start = mid+1
# end= len(l) -1
return cal(l,num,mid+1,end)
else:
return mid
else:
return '没找到'
print(cal(l,66))
模块:
#模块就是 py文件
#特点,写好了,但不直接使用的功能
#为什么这些模块不能直接使用要先导入在使用
#常用的和某个操作相关的 更具相关性分类
#分成不同模块
#三种:内置、扩展、自定义三种模块
#!/usr/bin/env python
#coding:utf-8
import collections
d = collections.OrderedDict()
print(d)
d['电脑']=1000
d['苹果'] = 10
print(d['电脑'])
for i in d:
print(i,d[i])
from collections import namedtuple
lxf = namedtuple('point',['x','y'])
p = lxf(1,2)
print(p.x)
print(p.y)
from collections import namedtuple
Card = namedtuple('card',['rank','suit'])
c = Card('2','红心')
print(c.rank,c.suit)#2 红心
双关队列deque
from collections import deque
q = deque()
q.append(1)
q.append(2)
q.append(3)
q.append(4)
q.appendleft('a')
print(q.popleft()) #a
print(q.pop())#4
print(q)
Time模块:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
import time
print(time.time()) #时间戳
print(time.localtime())#结构化时间
print(time.strftime('%Y-%m-%d %H:%M:%S'))#格式化时间
import time
print(time.time())#时间戳时间
#格式化时间,用字符串表示的时间
s = time.strftime('%Y-%m-%d %H:%M:%S')
print(s)
print(time.strftime('%x'))
#结构化时间
print(time.localtime())
s = time.localtime()
#时间戳<--结构化-->格式化的时间
print(s.tm_year)
1、接下来将时间戳时间转换成结构化的时间:
#!/usr/bin/env python
#coding:utf-8
import time
print(time.time())#1525756410.7670994
print(time.localtime(1500000000))#time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195
print(time.localtime(1600000000))#time.struct_time(tm_year=2020, tm_mon=9, tm_mday=13, tm_hour=20, tm_min=26, tm_sec=40, tm_wday=6, tm_yday=257
print(time.gmtime(1600000000))#伦敦的时间
2、结构化转换成格式化时间:
str_time = time.gmtime(1600000000) #伦敦时间
print(time.strftime('%Y-%m-%d %H:%M:%S',str_time))
str_time = time.localtime(1600000000)#当前时间
print(time.strftime('%Y-%m-%d %H:%M:%S',str_time))
3、格式化时间--》结构化时间--》时间戳时间
'2018-05-12 13:35:33'
ss = '2018-05-12 13:35:33'
ret = time.strptime(ss,'%Y-%m-%d %H:%M:%S')#time.struct_time(tm_year=2018, tm_mon=5, tm_mday=12, tm_hour=13, tm_min=35, tm_sec=33, tm_wday=5
print(ret)
print(time.mktime(ret))#1526103333.0
import time
4、#时间戳转化成格式化的使用
print(time.time())#时间戳
times = time.localtime(1525759883.4262004)#结构化时间
print(time.strftime("%Y-%m-%d",times))#结构化时间---》格式化时间
其他的模块:
Random模块:
import random
#小数
print(random.random())#0-1之间的小数
print(random.uniform(1,4))#0-4之间的小数
#整数
print(random.randint(1,3))#0\2\3的随机数
print(random.randrange(1,10)) #1-9的随机数不包括10
#随机返回
print(random.choice([1,'23',[4,5]]))# 随机返回一个1或者23或者[4,5]
print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合[[4, 5], '23']
#验证码:
import random
s = ''
for i in range(4):
s+= str(random.randint(0,9))
print(s)
#字母带数字
import random
def v_code():
code = ''
for i in range(5):
num = random.randint(0,9)
alf = chr(random.randint(65,90))#可以换成97,122
add = random.choice([num,alf])
code= ''.join([code,str(add)])
return code
print(v_code())
#数字、字母
#chr内置方式
num = random.randint(65,90)
print(chr(num))
num = random.randint(97,122)
print(chr(num))
#带数字大小写字母验证
import random
def func():
id = ''
for i in range(6):
num = random.randint(65,90)
alpha1 = chr(num)
num2 = random.randint(97,122)
alpha2 = chr(num2)
num3 = str(random.randint(0,9))
s = random.choice([alpha1,alpha2,num3])
id = ''.join([id,str(s)])
return id
print(func())
SYS模块:
import sys #python解释器
#sys.path 环境变量
#sys.argv 脚本执行
#sys.modules 存放了导入的模块的路径
#sys.exit() 退出
print(sys.path) #['E:\\PyCharm\\day5', 'E:\\PyCharm', 'E:\\python\\python36.zip', 'E:\\python\\DLLs', 'E:\\python\\lib', 'E:\\python', 'E:\\python\\lib\\site-packages']
一个模块是否可以被导入,全看是不是在sys.path包含的路径
通过脚本:
import sys
print(sys.argv)
if sys.argv[1] == 'zlex' and sys.argv[2] == 'zlex3714':
print('keyizhixing')
else:
sys.exit()
Os模块:
1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
2 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
3 os.curdir 返回当前目录: ('.')
4 os.pardir 获取当前目录的父目录字符串名:('..')
5 os.makedirs('dirname1/dirname2') 可生成多层递归目录
6 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
7 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
8 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
9 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
10 os.remove() 删除一个文件
11 os.rename("oldname","newname") 重命名文件/目录
12 os.stat('path/filename') 获取文件/目录信息
13 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
14 os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
15 os.pathsep 输出用于分割文件路径的字符串
16 os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
17 os.system("bash command") 运行shell命令,直接显示
18 os.environ 获取系统环境变量
19 os.path.abspath(path) 返回path规范化的绝对路径
20 os.path.split(path) 将path分割成目录和文件名二元组返回
21 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素22 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
23 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
24 os.path.isabs(path) 如果path是绝对路径,返回True
25 os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
26 os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
27 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
28 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
29 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
https://docs.python.org/2/library/sys.html?highlight=sys#module-sys
#!/usr/bin/env python
#coding:utf-8
getcwd 显示当前路径
Chdir 切换目录到其他目录
import os
print(os.getcwd()) #E:\PyCharm\day5
os.chdir(r'E:\PyCharm')
print(os.getcwd()) #E:\PyCharm
import os
ret = os.popen('dir').read()
print(ret)# 驱动器 E 中的卷是 软件
#卷的序列号是 81D7-5D2B
#E:\PyCharm\day5 的目录
import os
print(os.path.abspath('模块.py'))#E:\PyCharm\day5\模块.py
print(os.path.dirname(r'E:/PyCharm/day5/模块.py'))#E:/PyCharm/day5
print(os.path.dirname(r'E:/PyCharm/day5'))#E:/PyCharm
print(os.path.split(r'E:/PyCharm/day5/模块.py'))#('E:/PyCharm/day5', '模块.py')
print(os.path.basename(r' E:/PyCharm/day5/模块.py'))#模块.py
、
import os
print(os.path.join(r'E:\\','GG','BB'))
ret = os.listdir(r'E:/PyCharm/day5')
print(ret)#['log', 'ss.py', '__pycache__', '模块.py']
#算文件夹的大小:
import os
print(os.path.getsize(r'E:/PyCharm/day5/模块.py'))
import os
ret = os.listdir(r'E:/PyCharm/day5')
print(ret)
sum =0
for path in ret:
if os.path.isfile(path) is True:
sum += os.path.getsize(path)
print(sum)
正则表达式:
正则表达式的规则:
【0-9】 【a - z】 【A - Z】 【A - z】不建议这样写,可能有特殊字符
最好写成【a - z A - Z】
【0-9a-fA-F】用来匹配16进制
。配任意字符
。。。。。
。。。。。
标签:time;radom
原文地址:http://blog.51cto.com/xiaorenwutest/2115032