欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

day06 再谈编码 and 作业讲解

程序员文章站 2022-03-17 11:52:25
1. 小数据池,(其他语言又叫常量池) id() 查看变量的内存地址 is和== is 判断内存地址是否一致 == 判断内容是否一致 小数据池的作用: 为了快速的创建字符串对象, 可以减少内存的浪费 用缓存的前提:数据可以被共享。不可变. 2. 再谈编码 ascii: 数字,字母, 特殊字符。 字节 ......

1. 小数据池,(其他语言又叫常量池)

id() 查看变量的内存地址

is和==

is 判断内存地址是否一致

== 判断内容是否一致

小数据池的作用: 为了快速的创建字符串对象, 可以减少内存的浪费

用缓存的前提:数据可以被共享。不可变.

2. 再谈编码

ascii: 数字,字母, 特殊字符。 字节: 8bit = 1byte

gbk: 国标码。16bit, 2byte

unicode: 万国码。32bit, 4byte

utf-8:可变长度的unicode

  英文: 1byte 8bit

  欧洲文字: 2byte,16bit

  中文: 3byte, 24bit

python2中用的是ascii

python3用的是unicode

字符串如果传输:

encode(编码) 结果是bytes类型

接受到bytes之后。

需要解码 decode(解码). 结果是字符串

 

讲解:

# 有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} (升级题)
# {'k':1,'k1':2....}
# s = "k:1|k1:2|k2:3|k3:4"
# lst = s.split(":") # ['k:1', 'k1:2', 'k2:3', 'k3:4']
# dic = {}
# for el in lst: # 'k:1'
# k, v = el.split(":") # 解包, 解构, 元祖和列表
# dic[k] = int(v)
# print(dic)

 

# 输出商品列表,用户输入序号,显示用户选中的商品(升级题)
#
# 商品列表:
# goods = [{"name": "电脑", "price": 1999},
# {"name": "鼠标", "price": 10},
# {"name": "游艇", "price": 20},
# {"name": "美女", "price": 998}, ]
#
# 要求:
# 1:页面显示 序号 + 商品名称 + 商品价格,如:
# 1 电脑 1999
# 2 鼠标 10
# 2:用户输入选择的商品序号,然后打印商品名称及商品价格
# 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
# 4:用户输入q或者q,退出程序。
# 扩展:准备一个购物车。把购买的商品保存到购物车。 用户可以随意的对购物车进行增删改查

# goods = [{"name": "电脑", "price": 1999},
# {"name": "鼠标", "price": 10},
# {"name": "游艇", "price": 20},
# {"name": "美女", "price": 998}, ]
#

# for i in range(len(goods)):
# good = goods[i]
# print(i+1,good['name'], good['price'] )
#
# while 1:
# num = input("请输入你要购买的商品(序号):").strip() # 2
# if num.upper() == "q":
# break
#
# index = int(num) - 1 # 还原商品的索引 # 1
# if num.isdigit() and (index < 0 or index > len(goods)-1):
# print("输入有误, 请重新输入")
# continue
#
# print("您要购买的商品是%s, 价格是%s" % (goods[index]['name'], goods[index]['price']))