Python知识点练习题(一)
一、基础题
1、查看一个对象的类型关键字是什么?查看对象的内存地址关键字是什么?举例说明
答:查看一个对象的类型关键字是type,查看对象的内存地址关键字是id。举例如下:
1 #type()型 2 name=input("What is your name?\n") 3 print(type(name)) 4 #id()型 5 print(id(name))
运行结果如下:
What is your name? Lucy <class 'str'> 2177634999664 Process finished with exit code 0
2、字符串格式化使用到的关键字是哪个?举例说明
答:到目前为止,python格式化字符串有三种方法,第一是早期就有的%,其次是2.5之后的format(),还有就是3.6版本添加的f字符串调试。
第一种方法:%格式化字符串是python最早的,也是能兼容所有版本的一种字符串格式化方法。
name=str(input("What is your name?\n")) age=int(input("How old are you?\n")) sex=bool(input("women/man\n")) print("My name is %s and I am %d years old and I am a %s."%(name,age,sex)) 运行结果如下: What is your name? Rose How old are you? 12 women/man women My name is Rose and I am 12 years old and I am a True. Process finished with exit code 0
显然,%虽然强大,但用起来难免有些麻烦,代码也不是特别美观。
第二种和第三种表示法:.format()和f
name=input("What is your name?\n") age=input("How old are you?\n") sex=input("women/man\n") #在python 2.5 之后,提供了更加优雅的str.format()方法。 print("My name is {0} and I am {1} years old and I am a {2}.".format(name,age,sex)) #f字符串格式化 print(f"My name is {name} and I am {age} years old and I am a {sex}.") 运行结果如下: What is your name? Rose How old are you? 12 women/man women My name is Rose and I am 12 years old and I am a women. My name is Rose and I am 12 years old and I am a women. Process finished with exit code 0
3、字符串的替换使用到的方法是?
答:字符串的替换使用到的方法是:.replace("旧","新")
str4="hello java" print(str4.replace("java","world!")) 运行结果如下: hello world! Process finished with exit code 0
4、怎么获取字符串的索引信息?
答:获取字符串的索引信息有三种查找方式,一是.index()方法,另一个是.find()方法最后一个是enumerate(),其中,字符串里的位置是从左向右,以0开始的。空格也会算一个元素。
A:.index()方法,查看字符串里面对象的索引,是线性查找的思路。
str4="hhello wohrld" print(str4.index("h")) print(str4.index("z")) 运行结果如下: 0 Traceback (most recent call last): File "D:\test\code\testDev\python基础\字符串.py", line 58, in <module> print(str4.index("z")) ValueError: substring not found Process finished with exit code 1
B:.find()方法,也是线性方式查找。
str8="hhello" print(str8.find("h")) print(str8.find("a")) 运行结果如下: 0 -1 Process finished with exit code 0
.index()方法和.find()方法的区别:
a:如果index找不到元素,会导致程序报错。
b:如果find找不到元素,会返回-1。
C:enumerate()是将字符串所有的对象都遍历一遍。
str1="Hello!" for item in enumerate(str1): print(item) 运行结果如下: (0, 'H') (1, 'e') (2, 'l') (3, 'l') (4, 'o') (5, '!') Process finished with exit code 0
.index()方法和enumerate()的区别:
a:.index 返回的是查找对象的索引位置
b:enumerate函数是遍历数据对象,可以返回元素和元素下标
c:如果一个数组中含有相同的数值,那么使用index就无法做到遍历,输出的数值下标信息不全,会有重复。而enumerate函数可以很好的解决这个问题。
5、怎么理解“is”,“in”,“==” ?
答:is:比较的是两个对象的内存地址(id)。
示例1: a=1 b=a print(id(a)) print(id(b)) 运行结果如下: 2368035383600 2368035383600 Process finished with exit code 0 示例2: a=1 b="1" print(id(a)) print(id(b)) 运行结果如下: 2404665420080 2404666049328 Process finished with exit code 0 示例3: a=1 b=1 print(id(a)) print(id(b)) 运行结果如下: 2752376564016 2752376564016 Process finished with exit code 0
in:一个对象是否被包含在另外一个对象里面。
str1="abc" str2="ab" if str2 in str1: print("str2包含在str1里") else: print("str2不包含在str1里") 运行结果如下: str2包含在str1里 Process finished with exit code 0
==:比较的是两个对象的内容和类型。
示例1: a="1" b=1 if a==str(b): print("OK") else: print("not ok") 运行结果如下: OK Process finished with exit code 0 示例2: str1="abc" str2="ABC" if str1==str2.lower(): print("ok") else: print("not ok") 运行结果如下: ok Process finished with exit code 0
6、举例说明列表推导式的使用。
答:列表推导式的使用场合:在使用for循环的时候,用列表推导来创建新的列表。
列表推导式的语法格式如下: [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ] 此格式中,[if 条件表达式] 不是必须的,可以使用,也可以省略。
可以这样认为,它只是对 for 循环语句的格式做了一下简单的变形,并用 [] 括起来而已,只不过最大的不同之处在于,列表推导式最终会将循环过程中,计算表达式得到的一系列值组成一个列表。
#列表推导式 list=[x for x in range(10) if x>2] print(list) #分解列表推导式 list=[] for x in range(10): #获取一定的范围:rang(),包含开始不包含最后,从0开始 if x>2: list.append(x) #append:添加的元素默认在列表的最后一位 print(list) 运行结果如下: [3, 4, 5, 6, 7, 8, 9] Process finished with exit code 0
7、使用列表推导式实现取出100数字以内整除2的数字。
答:
list=[x for x in range(100) if x%2==0] print(list) 运行结果如下: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98] Process finished with exit code 0
8、列表中append()与insert()的区别是什么?举例说明
答:append()与insert()这2个函数在列表中均表示的是增加。
append:添加的元素默认在列表的最后一位。
insert:可以指定元素添加的位置。
#.append():添加的元素默认在列表的最后一位。 list1=["Go","Python","Java"] list1.append("Net") print(list1) #.insert():可以指定元素添加的位置。 list1=["Go","Python","Java"] list1.insert(3,"C++") print(list1) 运行结果如下: ['Go', 'Python', 'Java', 'Net'] ['Go', 'Python', 'Java', 'C++'] Process finished with exit code 0
9、怎么取出列表中相同的数据,所有的数据和不同的数据?举例说明
答:首先把列表转为set集合,然后按照集合的交集,并集,差集来提取列表中的数据。
list1=["go","java","Python","c"] list2=["a","b","go","java","c"] #交集(&):获取两个对象中的共同拥有的值,很重要!! print(set(list1)&set(list2)) #并集(|):把他们所有的元素合并在一起组成的集合。 print(set(list1)|set(list2)) #差集(-):list1和list2是两个集合,则所有属于list1且不属于list2的元素构成的集合。 print(set(list1)-set(list2)) print(set(list2)-set(list1)) 运行结果如下: {'java', 'go', 'c'} {'a', 'c', 'go', 'java', 'Python', 'b'} {'Python'} {'b', 'a'} Process finished with exit code 0
10、字符串与列表之间的互相转换。
#字符串转列表,使用.split()函数,这个函数本身就是列表型的。 str="hello world!" str_list=str.split(" ") print(str_list) print(type(str_list)) #列表转字符串,使用.join()函数,这个函数本身就是字符串型的。 list_str=" ".join(str_list) print(list_str) print(type(list_str)) 运行结果如下: ['hello', 'world!'] <class 'list'> hello world! <class 'str'> Process finished with exit code 0
11、当元组只有一个对象的时候,需要注意什么?
答:当元组只有一个对象的时候,记得加逗号,否则,系统会认为是字符串型。
tuple=("APPLE") print(tuple) print(type(tuple)) tuple1=("APPLE",) print(tuple1) print(type(tuple1)) 运行结果如下: APPLE <class 'str'> ('APPLE',) <class 'tuple'> Process finished with exit code 0
12、列表与元组的区别是什么?
答:列表:list=["apple","banana","orange"]
元组:tuple=("Go","Java","Python","C++")
区别:从形式上来看:列表使用的是中括号“[]”,元组使用的是小括号“()”。
从运行速度上来看:Python内部对元组进行了大量的优化,访问和处理速度都比列表快。
从内容上来看:列表是可变的,如果你想要增加、删减或者改变元素,那么列表显然更优。而元组是不可变的类型。因为对于元组来说,必须得通过新建一个元组来完成。
13、结合具体的代码案例说明演示字典的有序和字典的排序。
答:字典的有序,是按照我们人的主观意愿来进行排序的,使用的函数是:OrderedDict()函数。
#比如我想编写这样的字典:dict1={"name":"Lucy","age":12,"sex":"女"} from collections import OrderedDict dict1=OrderedDict() dict1["name"]="Lucy" dict1["age"]=12 dict1["sex"]="女" print(dict(dict1)) 运行结果如下: {'name': 'Lucy', 'age': 12, 'sex': '女'} Process finished with exit code 0
字典的排序,是按照计算及ASCLL码来进行排序,使用的函数是:sorted(),根据"key"和"value"来排序。
#对dict1={"name":"Lucy","age":12,"sex":"女"}排序 #都改为str型 dict2={"name":"Lucy","age":"12","sex":"女"} #按照key值来排序: data1=sorted(dict2.items(),key=lambda item:item[0]) print(dict(data1)) #按照value值来排序: data2=sorted(dict2.items(),key=lambda item:item[1]) print(dict(data2)) 运行结果如下: {'age': '12', 'name': 'Lucy', 'sex': '女'} {'age': '12', 'name': 'Lucy', 'sex': '女'} Process finished with exit code 0
14、字符串与字典之间的互相转换。
#字符串转字典,曲线救国 #字符串转列表 str="hello world!" str_list=str.split(" ") #['hello', 'world!'] #列表转字典 str_list_dict=enumerate(str_list) print(dict(str_list_dict)) print(type(dict(str_list_dict))) #{0: 'hello', 1: 'world!'} #字典转字符串,曲线救国 #字典转列表 str_list_dict_list=list(dict(str_list_dict).items()) str_list_dict_list_str=" ".join(str_list) #这块要注意,转换 print(str_list_dict_list_str) print(type(str_list_dict_list_str)) 运行结果如下: {0: 'hello', 1: 'world!'} <class 'dict'> hello world! <class 'str'> Process finished with exit code 0
15、什么是序列化与反序列化,举例说明列表、元组、字典序列化与反序列化。
答:序列化:把Python对象(字典、列表、元组)转为字符串的过程。
反序列化:把字符串转为Python对线(字典、列表、元组)的过程。
a:列表的序列化与反序列化
import json #列表的序列化 list=[x for x in range(5)] list_str=json.dumps(list) print(list_str) print(type(list_str)) #列表的反序列化 str_list=json.loads(list_str) print(str_list) print(type(str_list)) 运行结果如下: [0, 1, 2, 3, 4] <class 'str'> [0, 1, 2, 3, 4] <class 'list'> Process finished with exit code 0
虽然运行出来,展示的列表形式,但是序列化后确实是字符型,非序列化后字列表型。
b:元组的序列化与反序列化(很特殊)
import json #列表的序列化 tuple=("apple","orange") tuple_str=json.dumps(tuple) print(tuple_str) print(type(tuple_str)) #列表的反序列化 str_tuple=json.loads(tuple_str) print(str_tuple) print(type(str_tuple)) 运行结果如下: ["apple", "orange"] <class 'str'> ['apple', 'orange'] <class 'list'> Process finished with exit code 0
通过运行出来的结果可知,不论是序列化还是反序列化,展示出来的都是列表的形式,序列化的类型是字符串,非序列化的类型是列表型。
c:字典的序列化与反序列化
import json #字典的序列化1 dict={"name":"Lucy","age":23,"city":"xi'an"} dict_str=json.dumps(dict,indent=True,ensure_ascii=True) print(dict_str) print(type(dict_str)) #字典的序列化2 dict1={"name":"黛西","age":23,"city":"西安"} #注意有中文 dict1_str=json.dumps(dict1,indent=True,ensure_ascii=False) print(dict1_str) print(type(dict1_str)) #字典非序列化 str_dict=json.loads(dict1_str) print(str_dict) print(type(str_dict)) 运行结果如下: { "name": "Lucy", "age": 23, "city": "xi'an" } <class 'str'> { "name": "黛西", "age": 23, "city": "西安" } <class 'str'> {'name': '黛西', 'age': 23, 'city': '西安'} <class 'dict'> Process finished with exit code 0
虽然运行出来,展示的字典形式,但是序列化后确实是字符型,非序列化后字典型。
16、序列化与反序列化,结合字典编写,结合文件实现。
答:针对文件的序列化和反序列化
序列化:把第三方的内容写到文件中去,使用函数json.dump()
反序列化:从文件中读取数据,使用函数json.load()
#在Python里新建一个空白文件,名为"json.txt" import json #假设第三方的内容为: dict1={"name":"黛西","age":12,"city":"Beijing"} #这里出现了中文,记得ensure_ascii=False #文件的序列化操作json.dump() json.dump(dict1,open(file="json.txt",mode="w",encoding="UTF-8"),ensure_ascii=False) #文件的非序列化操作json.load data=json.loads(open(file="json.txt",mode="r",encoding="UTF-8")) print(data) print(type(data)) #写的是字典型,对应的也会输出字典型的 运行结果如下: {'name': '黛西', 'age': 23, 'city': "xi'an"} <class 'dict'> Process finished with exit code 0
17、结合函数的返回值编写一个案例。
1 def shopping(things="shoes",colour="yellow"): 2 if things=="clothes" and colour=="yellow": 3 return True 4 else: 5 return False 6 7 8 def profile(): 9 if shopping()==True: 10 print("加购成功!") 11 else: 12 print("加购失败!") 13 profile() 14 15 16 运行结果如下: 17 加购失败! 18 19 Process finished with exit code 0
18、编写一个读取文件内容和把内容写入文件的程序。
1 #把内容写入文件方法1 2 def open_W(): 3 f=open(file="data.txt",mode="w",encoding="UTF-8") 4 f.write("我想吃🍉!") 5 f.close() 6 open_W() 7 8 #把内容写入文件方法2 9 def with_W(): 10 with open(file="data.txt",mode="w",encoding="UTF-8") as f: 11 print(f.write("我想吃🍉!")) 12 with_W() 13 14 #读取文件内容方法1 15 def open_R(): 16 f=open(file="data.txt",mode="r",encoding="UTF-8") 17 print(f.read()) 18 f.close() 19 open_R() 20 21 #读取文件内容方法2 22 def with_R(): 23 with open(file="data.txt",mode="r",encoding="UTF-8") as f: 24 print(f.read()) 25 with_R() 26 27 28 运行结果如下: 29 打开data.txt,可以看到文件里有:我想吃🍉! 30 5 31 我想吃🍉! 32 33 Process finished with exit code 0
19、获取当前时间。
import datetime import time print(datetime.datetime.now()) 运行结果如下: 2022-06-26 21:02:01.205338 Process finished with exit code 0
二、综合实战
1、输出Java
data2=[["Go",["Java"]]]
data2=[["Go",["Java"]]] print(data2[0][1][0])
运行结果:
Java
Process finished with exit code 0
2、输出c
lists=['language',['go','python',['java','net',['c']]]]
lists=['language',['go','python',['java','net',['c']]]] print(lists[1][2][2][0])
运行结果:
c
Process finished with exit code 0
3、输出唐山
datas=["go",{"name":'lisi',"age":18,'address':["xian",'唐山']}]
datas=["go",{"name":'lisi',"age":18,'address':["xian",'唐山']}] print(datas[1]["address"][1])
运行结果:
唐山
Process finished with exit code 0
4、获取公司数据,合理的取数据。
data1=["Go","Python","阿里巴巴","腾讯","百度","字节跳动"]
(1):获取Go,并输出列表剩下的元素。
data1=["Go","Python","阿里巴巴","腾讯","百度","字节跳动"] a,*b=data1 print(a) print(b) 运行结果如下: Go ['Python', '阿里巴巴', '腾讯', '百度', '字节跳动'] Process finished with exit code 0
(2):获取Go,Python,并输出列表剩下的元素。
data1=["Go","Python","阿里巴巴","腾讯","百度","字节跳动"] a,b,*c=data1 print(a,b) print(c) 运行结果如下: Go Python ['阿里巴巴', '腾讯', '百度', '字节跳动'] Process finished with exit code 0
5、将列表里的元素,转换成字符串型。
lists=["正常双休" ,"带薪年假","五险一金"]
lists=["正常双休" ,"带薪年假","五险一金"] lists_str=",".join(lists) print(lists_str) print(type(lists_str)) 运行结果如下: 正常双休,带薪年假,五险一金 <class 'str'>
6、dict1={"name":"Lucy","age":23}
dict2={"sex":"女","salary":8000}
(1):分别获取name里的value,获取age里的value。
data1=dict1["name"] print(data1) data2=dict1["age"] print(data2) 运行结果如下: Lucy 23 Process finished with exit code 0
(2):给dict1增加一个"sex":"女"。
dict1["sex"]="女" print(dict1) 运行结果如下: {'name': 'Lucy', 'age': 23, 'sex': '女'} Process finished with exit code 0
(3):将dict1里的name后的"Lucy"改为"Rose"。
dict1["name"]="Rose" print(dict1) 运行结果如下: {'name': 'Rose', 'age': 23} Process finished with exit code 0
(4):删除dict1里的"name":"Lucy"。
del dict1["name"] print(dict1) 运行结果如下: {'age': 23} Process finished with exit code 0
(5):在字典dict1里查找所有的key值。
for item in dict1.keys(): print(item) 运行结果如下: name age Process finished with exit code 0
(6):在字典dict1里查找所有的value值。
for item in dict1.values(): print(item) 运行结果如下: Lucy 23 Process finished with exit code 0
(7):查找字典dict1里所有的键值对。
for key,value in dict1.items(): print(key,value) 运行结果如下: name Lucy age 23 Process finished with exit code 0
(8):将字典dict2追加到字典dict1后面。
dict1.update(dict2) print(dict1) 运行结果如下: {'name': 'Lucy', 'age': 23, 'sex': '女', 'salary': 8000} Process finished with exit code 0
7、提取出90。
dict2={"name":"wuyan","age":18,"datas":[{"english":90,"math":100}]}
dict2={"name":"wuyan","age":18,"datas":[{"english":90,"math":100}]} print(dict2["datas"][0]["english"])
运行结果:
90
Process finished with exit code 0
8、a、输出所有人的成绩 b、获取成绩里面的最高分,最低分,平均分,并且进行排序。
data=[ ("wangxiaoping","90"), ("zhaosi","89"),("gaosan","65"),("lihua","99"),("huahua","67")]
1 data=[ ("wangxiaoping","90"), ("zhaosi","89"),("gaosan","65"),("lihua","99"),("huahua","67")] 2 score=[] 3 for item in data: 4 score.append(int(item[1])) #为了提取出每个人的成绩 5 print(max(score)) #最高分 6 print(min(score)) #最低分 7 print(sum(score)/len(score)) #平均分 8 score.sort() #默认从小到大排序 9 print(score)
运行结果:
99 65 82.0 [65, 67, 89, 90, 99] Process finished with exit code 0
9、输出分数的最高分,最低分,平均分。
dict1={'name':'wuya',"score":[
{"score":"90"},
{'score':"88"},
{'score':"60"}]}
1 dict1={'name':'wuya',"score":[ 2 {"score":90}, 3 {'score':88}, 4 {'score':60}]} 5 test=[] 6 for item in dict1["score"]: 7 test.append(int(item["score"])) #为了提取出每个人的成绩 8 print(max(test)) #最高分 9 print(min(test)) #最低分 10 print(sum(test)/len(test)) #平均分
运行结果:
90
60
79.33333333333333
Process finished with exit code 0
10、在如下数据中获取学生成绩,输出如下几点:
A、学生最高,最低,平均成绩
B、过滤出成绩大于等于60的学生成绩
C、过滤出成绩小于60分的
D:过滤出成绩大于等于60的学生的名字
dict1={'status':0,'msg':'msg','data':[
{'name':"lisi","score":"90"},
{'name':"wangwu","score":"60"},
{'name':"lisi1","score":"88"},
{'name':"lisi2","score":"59"},
{'name':"lisi3","score":"24"},
{'name': "lisi4", "score": "66"},
{'name': "lisi5", "score": "70"},
{'name': "lisi6", "score": "45"},
{'name': "lisi7", "score": "39"}
]}
A:学生最高,最低,平均成绩
1 test=[] 2 for item in dict1["data"]: 3 test.append(int(item["score"])) 4 print(max(test)) 5 print(min(test)) 6 print(sum(test)/len(test))
运行结果:
90
24
60.111111111111114
Process finished with exit code 0
B、过滤出成绩大于等于60的学生成绩
C、过滤出成绩小于60分的
1 test=[] 2 for item in dict1["data"]: 3 test.append(int(item["score"])) 4 test1=list(filter(lambda test:test>=60,test)) 5 print(test1) 6 test2=list(filter(lambda test:test<60,test)) 7 print(test2)
运行结果:
[90, 60, 88, 66, 70] [59, 24, 45, 39] Process finished with exit code 0
D:过滤出成绩大于等于60的学生的名字
1 for item in dict1["data"]: 2 if int(item["score"])>=60: 3 print(item["name"])
运行结果:
lisi
wangwu
lisi1
lisi4
lisi5
Process finished with exit code 0
11、获取所有的城市
data4={"code":0,"message":"Success","zpData":[{"name":"全国","code":100010000,"url":"/?city=100010000"},{"name":"北京","code":101010100,"url":"/beijing/"},{"name":"上海","code":101020100,"url":"/shanghai/"},{"name":"广州","code":101280100,"url":"/guangzhou/"},{"name":"深圳","code":101280600,"url":"/shenzhen/"},{"name":"杭州","code":101210100,"url":"/hangzhou/"},{"name":"天津","code":101030100,"url":"/tianjin/"},{"name":"西安","code":101110100,"url":"/xian/"},{"name":"苏州","code":101190400,"url":"/suzhou/"},{"name":"武汉","code":101200100,"url":"/wuhan/"},{"name":"厦门","code":101230200,"url":"/xiamen/"},{"name":"长沙","code":101250100,"url":"/changsha/"},{"name":"成都","code":101270100,"url":"/chengdu/"},{"name":"郑州","code":101180100,"url":"/zhengzhou/"},{"name":"重庆","code":101040100,"url":"/chongqing/"},{"name":"佛山","code":101280800,"url":"/foshan/"},{"name":"合肥","code":101220100,"url":"/hefei/"},{"name":"济南","code":101120100,"url":"/jinan/"},{"name":"青岛","code":101120200,"url":"/qingdao/"},{"name":"南京","code":101190100,"url":"/nanjing/"},{"name":"东莞","code":101281600,"url":"/dongguan/"},{"name":"昆明","code":101290100,"url":"/kunming/"},{"name":"南昌","code":101240100,"url":"/nanchang/"},{"name":"石家庄","code":101090100,"url":"/shijiazhuang/"},{"name":"宁波","code":101210400,"url":"/ningbo/"},{"name":"福州","code":101230100,"url":"/fuzhou/"}]}
1 data4={} #省略,如上图所示 2 city=[] 3 for item in data4["zpData"]: 4 city.append(item["name"]) 5 print(city)
运行结果如下:
['全国', '北京', '上海', '广州', '深圳', '杭州', '天津', '西安', '苏州', '武汉', '厦门', '长沙', '成都', '郑州', '重庆', '佛山', '合肥', '济南', '青岛', '南京', '东莞', '昆明', '南昌', '石家庄', '宁波', '福州'] Process finished with exit code 0
12、用函数的导包的方式
dict1={"name":"Lucy","age":23,"city":"xi'an","time":time.time()}
a、针对字典进行排序,以key值来排序。b、把排序后的字典处理成key1=value1&key1=value2。 c、进行md5加密。(md5是一种加密方式,md5加密后基本破解不了。)
1 import time 2 from urllib import parse 3 import hashlib 4 #urllib 是网络爬虫 5 6 def password(): 7 dict1={"name": "Lucy", "age": 23, "city": "xi'an", "time": time.time()} 8 9 #字典进行排序 10 data=dict(sorted(dict1.items(),key=lambda item:item[0])) 11 print(data) 12 13 #把排序后的字典处理成key1=value1&key1=value2。 14 data2=parse.urlencode(data) 15 print(data2) 16 #进行md5加密 17 m=hashlib.md5() 18 m.update(data2.encode("UTF-8")) 19 print("加密后的结果信息:\n",m.hexdigest()) #哈希函数,不可逆,意味着如果您只知道输出,就无法确定输入 20 password()
运行结果如下:
{'age': 23, 'city': "xi'an", 'name': 'Lucy', 'time': 1656254535.887048} age=23&city=xi%27an&name=Lucy&time=1656254535.887048 加密后的结果信息: 297d822bbd3317787a69beb368a35e4d Process finished with exit code 0
13、设计函数,将通过文件的写入与读取,实现:a、注册登录 b、登陆成功后,显示个人主页 c、通过控制台的模式来交互
1 #公共部分:封装思想,减少重复代码的书写 2 def out(): 3 username=input("请输入您的账号:\n") 4 password=input("请输入您的密码:\n") 5 return username,password 6 7 #注册 8 def registred(): 9 username,password=out() 10 temp=username+"-"+password 11 with open(file="login.txt",mode="w",encoding="UTF-8") as f: 12 f.write(temp) 13 14 #登陆 15 def login(): 16 username, password = out() 17 temp = username + "-" + password 18 with open(file="login.txt", mode="r", encoding="UTF-8") as f: 19 list=f.read().split("-") 20 if username==list[0] and password==list[1]: 21 return True 22 else: 23 print("您的账号或者密码有误,请重新登录!") 24 25 #登陆成功后,显示个人主页 26 def profile(): 27 with open(file="login.txt",mode="r",encoding="UTF-8") as f: 28 list=f.read().split("-") 29 print("欢迎{0}来到主页面!".format(list[0])) 30 31 #通过控制台的模式来交互 32 def principal(): 33 while True: 34 try: #异常处理 35 f=int(input("1、注册,2、登陆\n")) 36 if f==1: 37 registred() 38 elif f==2: 39 if login()==True: 40 profile() 41 else: 42 print("请重新登录!") 43 else: 44 break 45 except: 46 continue 47 if __name__ == '__main__':#作为程序的入口,执行函数 48 principal()
运行结果如下:
1、注册,2、登陆 1 请输入您的账号: admin 请输入您的密码: 123 1、注册,2、登陆 2 请输入您的账号: admin 请输入您的密码: 123 欢迎admin来到主页面! 1、注册,2、登陆 2 请输入您的账号: Rose 请输入您的密码: 4325 您的账号或者密码有误,请重新登录! 请重新登录! 1、注册,2、登陆 3 Process finished with exit code 0