python学习6

1.购物车作业

li = ['手机','电脑','鼠标垫','游艇']
for i in li:
    print('{}\t\t{}'.format(li.index(i)+1,i))
num = input('选择商品序号>>>>>>>>:')
print(num,type(num))
while 1:

    if not num.isdigit():
        num = input('输入有误,请重新输入数字')
        continue
    else:
        number = int(num)
        if number >= 1 and number <= len(li):
            print(li[number - 1])
        else:
            num = input('请输入1-{number}范围内的数字'.format(number = len(li)))
            continue

    num = input('请继续选择,如果想退出的话,请输入q退出>>>>')
    if num.upper() == 'Q':
        break

继续实现余额提示功能

买了什么

1.商品输入,商品列表的形式

li = [
        {'name':'苹果','price':10}
        {'name':'香蕉','price':20}
        {'name':'西瓜','price':30}
        ]

2.资产输入

3.判断钱够不够

4.随时能退出

2.回顾复习,编码格式的转换

1.预备知识,各种编码格式

ASCII码
         A : 00000010    8位  一个字节



unicode
        A : 00000000 00000001 00000010 00000100 32位
        中: 00000000 00000001 00000010 00000100 32位


utf-8
      A: 0010 0000 8 位 一个字节
      中: 00000001 00000010 00000110 24位 三个字节



gbk:
      A  :  00000110 8 位 一个字节
      中:  00000010 00000110 16位 两个字节

1.各个编码之间的二进制不能互相识别,会产生乱码
2.文件的储存、传输都不能使用unicode编码,只能是utf-8、utf-16、gbk2312,或者ASCII等

python3的str在内存中是用unicode编码方式存储的

bytes 类型  是一种特殊的数据类型   不是以unicode编码方式存储的(utf-8,gbk,ascii.etc)
        对于英文:
        str :    表现形式s = 'alex'
                 编码方式:0101001001010101  unicode
        bytes:  表现形式:  s = b'alex'
                编码方式:   01010101010    utf-8 gbk
        对于中文:
        str :    表现形式s = '中国'
                 编码方式:0101001001010101  unicode
        bytes:  表现形式:  s = b'x\e91\e91\e01\e21\e31\e32'
                编码方式:   01010101010    utf-8 gbk.....

2.如何将python3内存中unicode编码的str转化成可以存储传输的utf-8,gbk编码的bytes格式

s = '中国'

s1 = s.encode('gbk')

print(s1)----------------->>>>>>b'\xd6\xd0\xb9\xfa'

#编码
# s = 'alex'
# s1 = b'alex'
# print(s,type(s))
# print(s1,type(s1))

# s1 = '中国'
# # print(s,type(s1))
# # s2 = b'中国'
# # print(s1.type(s2))

#encode   编码,如何将str转换成bytes类型
s1 = 'alex'
s11 = s1.encode('gbk')
print(s11)
s2 = '中国'
s22 = s2.encode('gbk')
print(s22)

3.小数据池

用来节省内存空间的,把一些东西放在了一个内存地址下

#数字,字符串,小数据池节省内存(-5——256是一个空间)Pycharm 会改变内存地址
#字符串:1.不能含有特殊字符
#        2.s*20 还是同一个地址,s*21以后都是两个地址
#        3.除了数字和字符串,例如列表、集合没有小数据池概念
# i1 = 6
# i2 = 6
# print(id(i1),id(i2))

猜你喜欢

转载自www.cnblogs.com/benbenxiaofeifei/p/9333111.html