5.2 random 返回随机生成的一个实数
-
random.randint() 返回随机生成的一个实数
import random #调用模块
def get_random_code(length=6):#变量为6
data = []
for i in range(length):#循环6次
v = random.randint(65,90)#生成65-90之间随机数字
data.append(chr(v))#将v变为字符追加到data列表中
return ''.join(data)#将列表中元素链接,变为空字符串
code = get_random_code()
print(code)#6位随机字符 -
random.choice 从序列中随机抽选一个函数 验证码,抽奖
import random
print(random.choice([1,2,3,4,5])) -
random.sample 一个奖项多个人
import random
print(random.sample([1,2,3,4],3)) # [3, 2, 4] -
random.uniform 随机小数
import random
print(random.uniform(1,5)) # 3.599380534928744 -
random.shuffle 将序列顺序打乱 洗牌
-
random.random()生成0和1之间的随机浮点数float
5.3 hashlib 摘要算法模块 Hmac算法
-
加密模块。md5/sha
import hashlib
md5 = hashlib.sha1('盐'.encode())
md5.update(b'str')
print(md5.hexdigest())-
两个文件的md5值是相同的
import hashlib
md5 = hashlib.md5()
#md5.update('hello'.encode())
#md5.update('wusir'.encode())
md5.update('hello,wusir'.encode())
# 46879507bf541e351209c0cd56ac160e
46879507bf541e351209c0cd56ac160e
print(md5.hexdigest())
# 将指定的 “字符串” 进行加密
1 import hashlib 2 3 def get_md5(data): 4 obj = hashlib.md5()#md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来,如果没有参数,所以md5遵守一个规则,生成同一个对应关系, 5 #如果加了参数,就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库。 6 obj.update(data.encode('utf-8'))#要对哪个字符串进行加密,就放这里 7 result = obj.hexdigest()#拿到加密字符串 8 return result# 返回加密字符串 9 10 val = get_md5('123') 11 print(val)
# 应用,用户登录
import hashlib USER_LIST = [] def get_md5(data): obj = hashlib.md5("12:;4436ff123ad".encode('utf-8')) obj.update(data.encode('utf-8')) result = obj.hexdigest() return result def register(): print('**************用户注册**************')#提示 while True:#循环注册 user = input('请输入用户名:')#输入 if user == 'N':#判断输入是否为N return #结束循环、函数 pwd = input('请输入密码:')#输入密码 temp = {'username':user,'password':get_md5(pwd)}#用户名和密码通过加密放在字典里 USER_LIST.append(temp)#将字典追加到列表里 def login(): print('**************用户登陆**************')#提示 user = input('请输入用户名:')#输入 pwd = input('请输入密码:') for item in USER_LIST:#循环列表里的字典 if item['username'] == user and item['password'] == get_md5(pwd):#比较输入的内容与字典里是否一样 return True register() result = login() if result:#判断返回值是否为真 print('登陆成功') else: print('登陆失败')
-
-
hmac输出的长度和原始哈希算法的长度一致。需要注意传入的key和message都是
bytes
类型,str
类型需要首先编码为bytes
。import hmac
message = b'Hello world'
key = b'secret'
h = hmac.new(key,message,digestmod='MD5')
print(h.hexdigest())
5.4 time /datetime 时间模块
-
time.time() 时间戳
import time
v = time.time() # 时间戳:1970-1-1 00:00 -
import time
print(time.timezone) # -28800 -
time.sleep(2) 睡2秒
-
datetime.now() 当前本地时间
from datetime import datetime
v1 = datetime.now()
print(v1) # 2019-04-18 17:52:33.046206 -
timezone(timedelta(hours=7)) 获取东7区时间
from datetime import datetime,timezone,timedelta
tz = timezone(timedelta(hours=7)) # 当前东7区时间
v2 = datetime.now(tz) -
datetime.utcnow() 当前UTC时间
from datetime import datetime,timezone,timedelta
v3 = datetime.utcnow() # 当前UTC时间
print(v3) -
strftime 把datetime格式转换成字符串
from datetime import datetime,timezone,timedelta
v1 = datetime.now()
print(v1,type(v1))
val = v1.strftime("%Y-%m-%d %H:%M:%S")
print(val) -
strptime 字符串转成datetime
from datetime import datetime,timezone,timedelta
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
print(v1,type(v1)) -
timedelta datetime时间的加减
from datetime import datetime,timezone,timedelta
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
v2 = v1 - timedelta(days=140)
date = v2.strftime('%Y-%m-%d')
print(date) -
时间戳和datetime关系
import time
from datetime import datetime,timezone,timedelta
ctime = time.time()
print(ctime)
v1 = datetime.fromtimestamp(ctime)
print(v1)
v1 = datetime.now()
val = v1.timestamp()
print(val)
个人站点 www.danpinsuiyue.com ,欢迎给各位大神莅临本博客空间。