【Finish】Python Day 6

1、homework

'''
输出商品列表,用户输入序号,显示用户选中的商品
    商品 li = ['手机','电脑','鼠标垫','游艇']
要求:
    1、li: 页面显示 序号+商品名称,如:
        1 手机
        2 电脑
        ……
    2、用户输入选择的商品序号,然后打印商品名称
    3、如果用户输入的商品序号有误,则提示输入有误,并重新输入
    4、用户输入Q或者q,退出程序
'''
while 1:
    li = ['手机','电脑','鼠标垫','游艇']
    for i in li:
        print('{}\t\t{}'.format(li.index(i)+1,i))
    num_of_choice = input('please input your choice id:')

    if num_of_choice.isdigit():
        num_of_choice = int(num_of_choice)
        if num_of_choice>0 and num_of_choice <= len(li):
            print('your choice is '+li[num_of_choice-1])
        else:print('please input correct digit')
    elif num_of_choice.lower() == 'q':
        break
    else:
        print('please input the digit')

2、小知识点总结回顾

pytho2和pytho3区别

# python2
# print 'abc' # print不用加括号,但是也可以加括号
# range() xrange() # xrange是生成器,可以转换成range
# raw_input() # 输入

# python3
# print('abc') # print必须加括号
# range() # 无xrange
# input() # 输入

# = :赋值运算,让2者指向同一个内存地址
# == :比较值
# is : 比较内存地址
# id(内容) :测出内存地址

# 数字,字符串
# 小数据池,为了节省空间,在一定范围内(-5 -- 256),i1和i2 指向的内存是一致的
        # i1 = 300
        # i2 = 300
# 字符串:1、不能有特殊字符 比如¥等 指向不同的内存地址
#         i1 = 'alex$'
#         i2 = 'alex$'
#         2、i1和i2 都是 'abc'*20,i1和i2指向的内存是相同的 i1和i2 都是 'abc'*21 ,i1和i2指向的内存是不同的
# 只有字符和数字有小数据池的概念
Python2和Python3 编码
# Python2 和 Python3 编码
Ascii
    只有英文
    1个英文 占 8位(1个字节)
Unicode
    开始16位,后来32位
    英文和中文都是32位(4个字节)
utf-8
    英文:8位(1个字节)
    中文:24位(3个字节)
GBK系列
    英文:8位(1个字节)
    中文:16位(2个字节)
1、各个编码之间的二进制,是不能互相识别的,会出现乱码
2、文件的储存、传输 不能是Unicode,(只能是utf-8,utf-16,gbk,gb2312,ascii等)

python3 编码

    str在内存中是用Unicode编码
    bytes类型:utf-8 或者 gb2312 编码
    如果str需要存储和传输,需要将str转换成bytes

    对于英文
        str :表现形式:s = 'alex'
              编码方式:01 Unicode
        bytes:表现形式:s = b'alex'
               编码方式:01,utf-8,gb2312……
    对于中文
        str :表现形式:s = '中国'
              编码方式:01 Unicode
        bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
               编码方式:01,utf-8

s1 = 'alex'
# encode:如何将 str->bytes
s11 = s1.encode('utf-8') #b'alex'
s11 = s1.encode('gbk') # b'alex'

s2 = '中国'
# encode:如何将 str->bytes
s11 = s2.encode('utf-8') # b'\xe4\xb8\xad\xe5\x9b\xbd'
s11 = s2.encode('gbk') # b'\xd6\xd0\xb9\xfa'

  

猜你喜欢

转载自www.cnblogs.com/wonderful0714/p/9332543.html
今日推荐