8.13 每日课后作业系列之hashlib shelve xml模块的运用

"""
1.借助shelve模块,完成将数据
"week": ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"]
"person": {"name": "Zero", "age": 8, "height": 180}
序列化到date.shl文件中
并反序列化来测试文件中的数据:如访问数据 "Tues"及"Zero"
探索:
自定义一个有打印语句的简单函数,将函数序列化到文件中,在反序列化测试函数中的打印语句
"""
import shelve
# ① 连接文件
# ② 序列化与反序列化
# ③ 断开连接
sl = shelve.open("temp.shl")

sl['week'] = ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"]
sl['person'] = {"name": "Zero", "age": 8, "height": 180}
def fun(): print("函数执行了....")
sl['fn'] = fun

print(sl['week'][2])
print(sl['person']['name'])
sl['fn']()

sl.close()

"""
2.有一个people.xml文件,内容如下
<?xml version="1.0" encoding="utf-8" ?>
<Peoples value="嘉宾">
<?[CDATA[
<a></a>
]]>
存放所有嘉宾的xml文件
<People flag="一号男嘉宾">
<name>张三</name>
<age>20</age>
<gender>男</gender>
</People>
<People flag="一号女嘉宾">
<name>李四</name>
<age>18</age>
<gender>女</gender>
</People>
</Peoples>
遍历输出xml文件中的所有数据
"""
"""
1.标签:被<>包裹以字母开头可以包含合法字符可以被解析的标记
2.xml中有且只能出现一个根标签
3.xml中所有标签都是自定义标签
4.xml所有标签都拥有结束标签
5.xml中标签可以拥有属性,内容与子标签
6.单双标签:单主功能(属性) 双主内容(内容与子标签)
"""
import xml.etree.ElementTree as et
tree = et.parse("people.xml")
root = tree.getroot() # Peoples
print(root.tag)
print(root.text)
print(root.attrib['value'])
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
for i in root: # i 两个People
print(i.attrib['flag'])
print(i.find('name').text)
print(i.find('age').text)
print(i.find('gender').text)
print("----------------------------------------")


"""
3.模拟加密过程
1)账号密码由用户键盘输入
2)对得到的账号密码进行md5方式加密处理(采取加盐)
3)提前建立基本的碰撞测试库
4)对于用户输入的账号密码进行反馈
-- 解密成功
-- 解密失败
"""
import hashlib
usr = input("账号:")
ps = input("密码:")
# 加盐
top = "12345"
bottom = "qwert"
data = top + ps + bottom + usr
# 锁加密
lock = hashlib.md5()
lock.update(data.encode("utf-8"))
# print(lock.hexdigest())
#8c649136390a2c204c924d3b9a1387e4 5580934aca25f70dc8c874259690a213
lib = ["8c649136390a2c204c924d3b9a1387e4", "5580934aca25f70dc8c874259690a213"]
# 碰撞解密
# for i in lib:
# if i == lock.hexdigest():
# print("解密成功")
# break
# else:
# print("解密失败")

tag = "解密失败"
for i in lib:
if i == lock.hexdigest():
tag = "解密成功"
break
print(tag)
















原文地址:https://www.cnblogs.com/Maikes/p/9474614.html