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)

猜你喜欢

转载自www.cnblogs.com/yangleiitzl/p/10285422.html