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
3.2 字符串
3.2.1不能有特殊字符
3.2.1 s20以内还是同一个地址,但是s21以外就是不同的地址 之前版本的结论
3.3剩下的list,dict,tuple,set保存地址都不相同
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('请输入正确金额!')