python基础数据类型四(id,is ,小数据池,编码)

id 查询内存地址
name = 'alex'
print(id(name))
name1 = 'alex'
name2 = 'alex'
print(name1 == name2)
= 赋值运算  == 比较数值相同
is 内存地址是否相同
小数据池,int str 在一定 范围内,如果两个数值相同,为了节省内存,会用一个内存地址’
int -5--256
str 有非字母元素就不是小数据池
    单个字母*int<21有小数据池
剩下的类型都不存在
编码:
ASCII: 一个字符 1个字节表示(8位),数字字母特殊字符。

unicode:万国码
    一个字符用四个字节表示》
    A:0000 0001 0000 0001 0000 0001 0000 0001
    中:0000 0001 0000 0001 0000 1001 0000 0001

utf-8:
    a: 0000
  欧洲:0000 0001 0100 0001
  亚洲:0000 0001 0000 0001 1100 0001

gbk:国标
    a:0001 0001
    中:0000 0001 0000 0001
1.不同密码本之间的二进制是不能相互是别的,容易报错或者乱码
2.计算机文件的储存和传输都是1010110,(gbk,gbk2312,ASCII,utf-8等等)不能是unicode
大前提, python3x ,编码
数据类型
int
str
bytes str有的所有的方法,bites都有
bool
list
tupe
dic
set
python3x
str:内部编码方式 unicode
bytes:内部编码方式 非unicode。
英文:
    str:  内部编码方式 unicode
          表现形式:name = 'alex'

    bytes:  内部编码方式 非unicode
          表现形式:name = b'alex'

中文:
    str:  内部编码方式 unicode
          表现形式:name = '中国'

    bytes:  内部编码方式 非unicode
            表现形式:name = b'\xe2\xe2\xe2\xe2\xe2\xe2'
with open('02 作业讲解.py',encoding='utf-8') as f1:
print(f1.read(),type(f1.read()))
name='alex'
name1=b'alex'
print(name,type(name))
print(name1,type(name1))#<class 'bytes'>
name='中国'.encode('utf-8')  #<class 'bytes'>转化为编码方式为utf-8的bytes类型
name1=b'alex'
print(name,type(name)) # b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'>
print(name1,type(name1)) # b'alex' <class 'bytes'>
str-->bytes
s1='中国' #编码方式为unicode
b1=s1.encode('utf-8')#b'\xe4\xb8\xad\xe5\x9b\xbd' encode 编码
b2=s1.encode('gbk')#b'\xd6\xd0\xb9\xfa'
print(b1,type(b1))#<class 'bytes'>
print(b2,type(b2))#<class 'bytes'>
s2=b1.decode('utf-8')#中国 decode解码,用什么编码,就用解码
s3=b2.decode('gbk')#中国
print(s2,type(s2))#<class 'str'>
print(s3,type(s3))#<class 'str'>
utf-8 bytes-->gbk bytes
s1=b'alex'
print(s1.capitalize()) #str的所有方法都适用于bytes

str ---> bytes
b1 = '中国'.encode('utf-8')
print(b1,type(b1))
bytes ---> str
s1 = b1.decode('utf-8')
print(s1,type(s1))
b2 = s1.encode('utf-8')
print(b2,type(b2))
utf-8 bytes --->gbk bytes
s2 = b1.decode('utf-8')
print(s2,type(s2))
b2 = s2.encode('gbk')
print(b2,type(b2))
s3=b2.decode('gbk')
print(s3)


tast
1,有如下变量(tu是个元祖),请实现要求的功能
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
a. 讲述元祖的特性
只读列表,不可进行增删改,只能查询
b. 请问tu变量中的第一个元素 “aaa” 是否可被修改?

c. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
字典,可以
tu[-1][-2]['k2'].append('Seven')
print(tu)
d. 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
元祖,不可以
2, 字典dic,dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    a. 请循环输出所有的key
for key in dic.keys():
    print(key)
    b. 请循环输出所有的value
for value in dic.values():
    print(value)
    c. 请循环输出所有的key和value
for k,v in dic.items():
    print(k,v)
    d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
dic['k4']='V4'
dic.setdefault('k4','v4')
print(dic)
    e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典
dic['k1']='alex'
print(dic)
    f. 请在k3对应的值中追加一个元素 44,输出修改后的字典
dic['k3'].append(44)
print(dic)
    g. 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic['k3'].insert(0,18)
print(dic)
3,
av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌丝请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}
   # 1,给此 ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个元素:'量很大'。
av_catalog['欧美']['www.youporn.com'].insert(1,'量很大')
print(av_catalog)
   # 2,将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
av_catalog['欧美']['x-art.com'].remove('全部收费,屌丝请绕过')
av_catalog['欧美']['x-art.com'].pop(1)
del av_catalog['欧美']['x-art.com'][1]
print(av_catalog)
   # 3,将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
# 4,将此["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写。#一定要复习之前的内容
av_catalog['日韩']['tokyo-hot'][-1]=av_catalog['日韩']['tokyo-hot'][-1].upper()
print(av_catalog)
   # 5,给 '大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']
av_catalog['大陆']['1048']=['一天就封了']
av_catalog['大陆'].setdefault('1048','一天就封了')
print(av_catalog)
   # 6,删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]键值对。
del av_catalog['欧美']['letmedothistoyou.com']
av_catalog['欧美'].pop('letmedothistoyou.com','没有此值')
print(av_catalog)
   # 7,给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素,加上一句话:'可以爬下来'
av_catalog['大陆']['1024']='全部免费,真好,好人一生平安,可以爬下来'
print(av_catalog)
4、有字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}#考试题
l='k:1|k1:2|k2:3|k3:4'.split('|')#['k:1', 'k1:2', 'k2:3', 'k3:4']
dic={}
for i in l:
   dic[i.split(':')[0]]=int(i.split(':')[1])#不要想一步到位,理清思路,从概念上去解决他
print(dic)
5、元素分类
有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,
将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
li= [11,22,33,44,55,66,77,88,99,90]
dic={'k1':[],'k2':[]}
for i in li:
    if i>66:
        dic['k1'].append(i)
    else:
        dic['k2'].append(i)
print(dic)
6、输出商品列表,用户输入序号,显示用户选中的商品
商品 li = ["手机", "电脑", '鼠标垫', '游艇']
要求:1:页面显示 序号 + 商品名称,如:
1 手机
2 电脑

2: 用户输入选择的商品序号,然后打印商品名称
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。
   l = input('1手机\n2电脑 \n3鼠标垫\n4游艇\n请输入你的选择:输入Q或者q,退出程序').strip()#太low
     dic={'手机':1,'电脑':2,'鼠标垫':3,'游艇':4}#自己方向错了
while True:
    li = ["手机", "电脑", '鼠标垫', '游艇']
    for i in range(len(li)):
        print('{}\t{}'.format (i+1,li[i]))
        # print('%d \t %s' % (i+1,li[i]))#数据转化时麻烦
    # for i in li:
    #     print('{}\t{}'.format (int(li.index(i)) + 1,i ))格式化输出时麻烦,所以不建议用for i in li
    s = input('请输入你的选择:输入Q或者q,退出程序').strip()
    if s.upper() == 'Q':
        print('欢迎使用')
        break
    # flag = False
    elif s.isdigit():
        s=int(s)
        if s > 0 and s < 5:
            print('您选择的商品是: %s' % li[s - 1]) #内容要经常复习
            pass
            '''
            输入总资产,与商品价格作比较,能买就添加到购物车,
            不能买,告知用户余额不足,将余额打印出来
            '''
        else:
            print('你选择的序号有误,请重新输入')

    else:
        print('你输入的含有非数字字符,请重新输入')
重点:
li = ["苍老师","东京热","武藤兰","波多野结衣"]
l1 = []
comment = input('请输入评论>>>')
for i in li:
    if i in comment:
        comment = comment.replace(i,'*'*len(i))
l1.append(comment)
print(l1)

 

posted @ 2018-05-19 23:41  老虎死了还有狼  阅读(499)  评论(0编辑  收藏  举报