1.python2与python3区别:

python2:

print(‘abc’), print 'abc ’
 range( ), xrange( ) 生成器
 raw_input( )

python3:

print('abc ')

range( )

input( )

2. = ,==,is

=:赋值

==:判断比较是否相等

is:比较的是内存地址 (id)

3.id的判别

3.1 数字

id相同的数字范围: -5~256

python 进程内存地址 python中内存地址_编码方式


3.2 字符串

3.2.1不能有特殊字符

python 进程内存地址 python中内存地址_python_02


3.2.1 s20以内还是同一个地址,但是s21以外就是不同的地址 之前版本的结论

python 进程内存地址 python中内存地址_python_03

python 进程内存地址 python中内存地址_python 进程内存地址_04


3.3剩下的list,dict,tuple,set保存地址都不相同

python 进程内存地址 python中内存地址_python 进程内存地址_05


4.编码

类型

英 文

ascll

8位 一个字节

unicode

32位 4个字节

utf-8

8位 1个字节

gbk

8位 1个字节

类型

中 文

ascll


unicode

32位 4个字节

utf-8

24位 3个字节

gbk

16位 2个字节

4.1各个编码之间的二进制是不能相互识别的,会产生乱码。
4.2文件的存储传输不能是unicode,只能是utf-8,utf-16,gbk,gb2312,ascll等。
对于英文:
str 表现形式:s = ‘jerry’ 编码方式:unicode
bytes 表现形式:s = b’jerry’ 编码方式:utf-8,gbk
对于中文:
str 表现形式:s = ‘历史’ 编码方式:unicode
bytes 表现形式:s = b’\xe5\x8e\x86\xe5\x8f\xb2’ 编码方式:utf-8,gbk
python3中,str在内存中是以unicode的方式存储,只有转换为bytes类型才可进行存储和传输,就应用在文件的存储与传输中:
表面是把str->bytes,实际上是吧unicode->utf-8,gbk

s = 'jerry'
# str只有转换为bytes才可以进行存储和传输
s1 = s.encode('utf-8')
print(s1,type(s1))
s = '历史'
s1 = s.encode('utf-8')
s2 = s.encode('gbk')
print(s1,type(s1))
print(s2,type(s2))

5.简单购物车示例:有比较深的感受一个是input会把所有输入变为str型,因此如果是数字的话可以较早的int转义,如果不转的后边可能回经常出现str相加的事情,第二个是在之前经常使用的+=相类似的如果在python中想要将原本str类型的字符先int转义之后再+=就会报错。

li = [
    {'name': '手机', 'price': 10},
    {'name': '电脑', 'price': 20},
    {'name': '电视', 'price': 30},
    {'name': '冰箱', 'price': 40}]
shopping_car = {}
flag = True
print('欢迎光临本店!')
money = input('请输入您的金额:')
if money.isdigit() and int(money) > 0:
    while flag:
        for i in li:
            print('序号:{}\t商品:{}\t价格:{}'.format(li.index(i), i['name'], i['price']))
        choose = input('请输入要购买的序号/输入Q或q退出:')
        if choose.isdigit() and 0 <= int(choose) < len(li):
            num = input('请输入购买的数量:')
            if num.isdigit() and 0 < int(num):
                if int(money) > li[int(choose)]['price']*int(num):
                    print('购买成功!')
                    money = int(money)-li[int(choose)]['price']*int(num)
                    if li[int(choose)]['name'] in shopping_car:
                        shopping_car[li[int(choose)]['name']] = int(shopping_car[li[int(choose)]['name']]) + int(num)
                    else:
                        shopping_car.setdefault(li[int(choose)]['name'],num)
                    print('购物车:')
                    for s in shopping_car.items():
                        print('商品名:{}\t购买量:{}'.format(s[0],s[1]))
                    print('余额:{}'.format(money))
                else:
                    print('余额不足,请重新购买!')
            else:
                print('请输入正确的购买数量!')


        elif choose.lower() == 'q':
            print('谢谢惠顾,欢迎下次再来!')
            flag = False
        else:
            print('请输入有效序号 ')
else:
    print('请输入正确金额!')