1,练习题一:以66分割,大于部分一个键值对,小于部分一个键值对
li = [23,78,67,45,34,89,67,78,23,23] lig = [] lil = [] dic = {} for i in li: if i == 66: continue elif i > 66: lig.append(i) else: lil.append(i) dic.setdefault("k1",lig) dic.setdefault("k2",lil) print(dic.items()) 运行结果: dict_items([('k1', [78, 67, 89, 67, 78]), ('k2', [23, 45, 34, 23, 23])])
2,练习题二
li = ["apple","pear","peach","watermelon"] # 页面显示商品名称 for i in li: print(li.index(i)+1," ",i) # 用户输入index显示商品名称 while 1: num = input(">>>").strip() # 这句话注意要写在循环里面 if num.isdigit(): num = int(num) if num in range(0,len(li)+1): print(li[num-1]) else: print("number out of range") elif num.lower() =="q": break else: print("please input an number") 运行结果: 1 apple 2 pear 3 peach 4 watermelon >>>5 number out of range >>>4 watermelon >>>e please input an number >>>q
3,Python2 和Python3的几点小区别:
Python2除了range函数还有个xrange,但是Python3只有range;
Python2的input函数叫做raw_input,Python3叫做input;
Python2的print函数,加括号不叫括号都可以,Python3必须加,另外还有之前讲解的编码区别
4,赋值运算符= 和身份运算符is 前置比较的是值,后者比较的是地址,如果用pycharm 的话,很多都会做优化占用一个地址,如果用console就不是一个了
这个老师也没有总结出来规律知道就好了,数字和字符串,基本上数字-5到256,字符串s*20 还是同一个,s*21就不是了,遇到的时候,还是实际来跑一下,因为没有明显规律
a = "abcdefgh" b = "abcde" c = a print (id(a),id(b),id(c)) print (a == b) #比较的是值 print (a is b) #比较的是地址 print (a == c) print (a is c) # 由于小资源池的存在,Python为了节省空间自动用一块儿存储空间 a = 20000 b = 20000 c = a print (id(a),id(b),id(c)) print (a == b) print (a is b) print (a == c) print (a is c) 运行结果: 4460901104 4459766536 4460901104 False False True True 4459708336 4459708336 4459708336 True True True True
li = [1,] l2 = [1,] print(li is l2) print(li == l2) 运行结果: False True
5,各个编码之间的二进制文件是不能互相认识的,密码本不同,文件的储存传输不能是unicode,只能是(GBK,GBK2312,UTF-8,UTF-16,ASCII)等也就是bytes类型,他们之间的转化需要通过Unicode,str在内存中是Unicode存储的,不能直接用来存储和传输,必须先转化成bytes类型,pycharm帮我们完成了这个转化的过程,其他的文件需要我们自己手动转化
""" bytes类型 对于英文: str :表现形式:s = "lisa" 编码方式:01010100 Unicode bytes:表现方式:s =b'lisa' 编码方式:s = 10010011 utf-8 gbk...... 对于中文: str :表现形式:s = "我们" 编码方式:01011110 Unicode bytes:表现方式:s =b'xe6x88x91xe4xbbxac' 编码方式:s = 10010011 11100101 11100001 utf-8 gbk...... """ s = 'lisa' s1 = b'lisa' print(s,type(s)) print(s1,type(s1)) print("") s = '我们' # s1 = b'我们' #注意这个是错误的 报错:SyntaxError: bytes can only contain ASCII literal characters. # encode 函数将str转化为bytes,还有decode函数 # 注意两种编码方式占用字节数,以及编码结果 s1 = s.encode("gbk") print(s1,type(s1)) s1 = s.encode('utf-8') print(s,type(s)) print(s1,type(s1
运行结果:
lisa <class 'str'>
b'lisa' <class 'bytes'>
b'xcexd2xc3xc7' <class 'bytes'>
我们 <class 'str'>
b'xe6x88x91xe4xbbxac' <class 'bytes'>