基础
'''
1.简述可变类型与不可变类型的本质,并列举Python中都有哪些可变与不可变类型
'''
可变类型和不可变类型存储的都是硬盘中的空间地址,但是可变类型由于有开辟的堆区空间作为其大本营,其中所存放的地址改变也没有关系,但是不可变类型直接与空间内部的值有直接连接,值变化,不可变类型的地址也会发生变化。
可变类型:list,dic,set
不可变类型:int,str,bool,tuple,float,None
'''
2.有好友列表[('Owen', '上海'), ('Zero', '上海'), ('Nick', '安徽'), ('Jason', '安徽'), ('Jerry', '江苏')],计算每个地区好友的个数,如上列好友列表的结果:{'上海': 2, '安徽': 2, '江苏': 1}
'''
friends = [('Owen', '上海'), ('Zero', '上海'), ('Nick', '安徽'),('Jason', '安徽'), ('Jerry', '江苏')]
area_number = {}
for name, area in f:
area_number.setdefault(area,0)
area_number[area] +=1
print(area_number)
'''
3.老男孩三门课程的报名名单:python={'p', Owen'},linux={'l', 'Owen'},online={'o', 'Owen'}
1)求三门课程都报了的名单
2)只报了一门课程的名单
3)只报了online课程的名单
4)所有报名的名单
'''
python = {'p', 'Owen'}
linux={'l', 'Owen'}
online={'o', 'Owen'}
res1 = python & linux & online
res2 = python ^ linux ^ online
res3 = online - (linux | python)
res3 = online - linux - python
res4 = python | linux | online
print(res1,res2,res3,res4)
'''
4.简述你知道的编码表,并简述在这些编码表中 英文和汉字 各占几个字节
'''
ASCII/DBSC : 英文 => 1个字节 dbcs中文 => 2个
utf-8 : 英文 => 1个字节 中文 => 3个
Unicode:英文 => 2个字节 中文 => 2个
GBK/GB2312:英文 => 1个字节 中文 => 2个
'''
5.有一个 gbk作业文件.txt (采用gbk编码的文件,见群),完成对该文件的复制 得到 gbk作业文件_复制版.txt
'''
with open(r'C:\Tiffany\python\exercise\me\3\gbk作业文件.txt','r',encoding='GBK') as rf:
with open(r'C:\Tiffany\python\exercise\me\3\gbk作业文件_copy.txt','w',encoding='GBK') as wf:
for line in rf:
wf.write(line)
'''
1.老男孩三门课程的报名名单:python={'p', Owen', 'pl', 'po'},linux={'l', 'Owen', 'pl', 'lo'},online={'o', 'Owen', 'po', 'lo'},求只报了两门课程的总名单
'''
python = {'p', 'Owen', 'pl', 'po'}
linux = {'l', 'Owen', 'pl', 'lo'}
online = {'o', 'Owen', 'po', 'lo'}
res = (python | linux | online) - (python ^ linux ^ online) - (python & linux & online)
print(res)
'''
2.尝试验证在Unicode编码下,英文和汉字都是占2个字节(提示:unicode-escape)
'''
print('好'.encode('unicode-escape')) # b'\\u597d'
print(b'\\u0041'.decode('unicode-escape')) # A
'''
3.有一个 gbk作业文件.txt (采用gbk编码的文件,见群),采用 rb 与 w 两种模式完成复制得到 utf8作业文件.txt (采用utf-8编码的文件)
'''
with open('gbk作业文件.txt','rb') as rf:
with open('utf8作业文件.txt', 'w', encoding='gbk') as wf:
for line in rf:
line = line.decode('gbk')
wf.write(line)