python基础知识补充一
#asccii : 8位 1字节 表示一个字符 #unicode 32位 4个字节 表示一个字符 #utf - 8 1个英文 8 位 1个字节 # 欧洲 16 位 两个字节 表示一个字节 # 亚洲 24 位 三个字节 表示一个字节 #gbk 1个英文 8位 1个字节 # 亚洲 16位 两个字节 表示一个字节 # 在循环一个列表时,最好不要有删除列表步骤,删除列表元素会使 # 列表元素中的索引发生变化导致循环时程序发生报错 # 有如下值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] a=[] b=[] c={} # for i in li: # if i < 66: # a.append(i) # else: # b.append(i) # # c.setdefault('k1', a) # c.setdefault('k2', b) # print(c) ''' 4、输出商品列表,用户输入序号,显示用户选中的商品 商品 li = ["手机", "电脑", '鼠标垫', '游艇'] 要求:1:页面显示 序号 + 商品名称,如: 1 手机 2 电脑 … 2: 用户输入选择的商品序号,然后打印商品名称 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。 4:用户输入Q或者q,退出程序。 ''' # li = ["手机", "电脑", '鼠标垫', '游艇'] # # # while True: # for i in li: # print('{}\t{}'.format(li.index(i)+1,i))# \t 空格 format 格式化字符串 {} 表示 # a = input('请输入商品序号:或者输入Q/q退出') # if a.isdigit():# 判断输入的是否全是数字 # a = int(a) # if a > 0 and a <len(li): # print(li[a-1]) # else: # print('您输入的数字有误!请重新输入') # # elif a.upper() == 'Q': # print('欢迎下次再来!') # break # else: # print('请再次选择') # flag = True # while flag: # li = ["手机", "电脑", "鼠标垫", "游艇"] # for i in li: # print('{}\t\t{}'.format(li.index(i) + 1, i)) # num_of_chioce = input('请输入选择的商品序号/输入Q或者q退出程序:') # if num_of_chioce.isdigit(): # num_of_chioce = int(num_of_chioce) # if num_of_chioce > 0 and num_of_chioce <= len(li): # print(li[num_of_chioce - 1]) # else: # print('请输入有效数字') # elif num_of_chioce.upper() == 'Q': # break # else: # print('请输入数字') #数据池 # = 赋值 == 比较值是否相等 is 比较的是内存地址 ID (内容) # li = [1,2,3] # = 赋值的内存地址一样 # # li2 = li # print(id(li)) # print(id(li2)) #数字,字符串 小数据池 #数字的范围 无范围 #字符串:1,不能有特殊字符 待定 # 2,s*20 还是同一个地址,s*21以后都是两个地址 # li = 500 # li2 = 500 # print(id(li)) # print(id(li2)) # i1 = 'a$l' # i2 = 'a$l' # print(id(i1),id(i2)) # i1 = 300 # i2 = 300 # print(id(i1),id(i2)) # a = 6 # b = 6 # print(id(a),id(b)) # s = 'alex' # s1 = b'alex'# 前面加b 转换bytes类型 # print(s,type(s)) # print(s1,type(s1)) # s1 = 'alex' # encode 编码,如何将str --> bytes, () # s2 = '中国' # print(s2.encode('utf-8')) # print(s2.encode('gbk')) '''ascii A : 00000010 8位 一个字节 unicode A : 00000000 00000001 00000010 00000100 32位 四个字节 中:00000000 00000001 00000010 00000110 32位 四个字节 utf-8 A : 00100000 8位 一个字节 中 : 00000001 00000010 00000110 24位 三个字节 gbk A : 00000110 8位 一个字节 中 : 00000010 00000110 16位 两个字节 1,各个编码之间的二进制,是不能互相识别的,会产生乱码。 2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等) py3: str 在内存中是用unicode编码。 bytes类型 对于英文: str :表现形式:s = 'alex' 编码方式: 010101010 unicode bytes :表现形式:s = b'alex' 编码方式: 000101010 utf-8 gbk。。。。 对于中文: str :表现形式:s = '中国' 编码方式: 010101010 unicode bytes :表现形式:s = b'x\e91\e91\e01\e21\e31\e32' 编码方式: 000101010 utf-8 gbk。。。。''' # s = ' ' # print(s.isspace()) #字符串中只包含空格则返回True # dic = dict.fromkeys([1,2,3],['春哥','laxe','bg'])#fromkeys 创建一个新字典,以序列 seq 中元素做字典的键, # # value 为字典所有键对应的初始值, 值只能对应一个单一的一个整体,如单个字符串,单个列表 # print(dic) dic = dict.fromkeys([1,2,3],[]) print(dic) # {1: [], 2: [], 3: []} # dic[1].append('袁姐') # print(dic) dic[3].extend('二哥hao') print(dic)