import re from datetime import datetime, timezone, timedeltadef to_timestamp(dt_str, tz_str):# 时间dt_now = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')#时区tz_num = int(re.match('\w{3}([+|-]\d+):00',tz_str).groups()[0])tz_utc = timezone(timedelta(hours = tz_num))#utc时间,强制设置时区dt_now = dt_now.replace(tzinfo=tz_utc)return dt_now.timestamp()# 测试: t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00') assert t1 == 1433121030.0, t1t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00') assert t2 == 1433121030.0, t2print('ok')#请写一个能处理去掉=的base64解码函数:#在python中字符串和字节编码序列之间的转换一定要用utf-8编码和解码 import base64def safe_base64_decode(s):if len(s) % 4 == 0:return base64.b64decode(s)else:remain = 4 - (len(s) % 4)a = '='a *= remains = s.decode('utf-8')s += areturn base64.b64decode(s.encode('utf-8'))# 测试: assert b'abcd' == safe_base64_decode(b'YWJjZA=='), safe_base64_decode('YWJjZA==') assert b'abcd' == safe_base64_decode(b'YWJjZA'), safe_base64_decode('YWJjZA') print('ok')# -*- coding: utf-8 -*- import base64, structdef bmp_info(data):info = struct.unpack('<ccIIIIIIHH',data[:30])if (info[0] , info[1]) == (b'B',b'M'):return {'width': info[6],'height': info[7],'color': info[9]}else:return 'NOT BMP FILE'def bmp_check(file):with open(file,'rb') as f:info = struct.unpack('<ccIIIIIIHH',f.read(30))if (info[0], info[1]) == (b'B', b'M'):return {'width': info[6],'height': info[7],'color': info[9]}else:return 'NOT BMP FILE'#print(struct.unpack('<ccIIIIIIHH',bmp_data[:30])) # 测试 bi = bmp_check(r'')#文件路径 print(bi) assert bi['width'] == 28 assert bi['height'] == 10 assert bi['color'] == 16 print('ok')# -*- coding: utf-8 -*- import hashlib db = {'michael': 'e10adc3949ba59abbe56e057f20f883e','bob': '878ef96e86145580c38c87f0410ad153','alice': '99b1c2188db85afee403b1536010c2c9' }def login(user, password):md5 = hashlib.md5()md5.update(password.encode('utf-8'))return md5.hexdigest() == db[user]# 测试: assert login('michael', '123456') assert login('bob', 'abc999') assert login('alice', 'alice2008') assert not login('michael', '1234567') assert not login('bob', '123456') assert not login('alice', 'Alice2008') print('ok')# -*- coding: utf-8 -*- import hashlib, randomdef get_md5(s):return hashlib.md5(s.encode('utf-8')).hexdigest()class User(object):def __init__(self, username, password):self.username = usernameself.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)])self.password = get_md5(password + self.salt) db = {'michael': User('michael', '123456'),'bob': User('bob', 'abc999'),'alice': User('alice', 'alice2008') }def login(username, password):user = db[username]return user.password == get_md5(password+user.salt)# 测试: assert login('michael', '123456') assert login('bob', 'abc999') assert login('alice', 'alice2008') assert not login('michael', '1234567') assert not login('bob', '123456') assert not login('alice', 'Alice2008') print('ok')