上节课作业的参考答案:
# 课堂训练
products = [["iphone", 6888], ["MacPro", 14888], ["小米6", 2499], ["Book", 60], ["Nike", 690]]
print("--------- 商品列表 ----------")
i = 0
for product in products:
i = i + 1
print(i," " + product[0] + " ", product[1])
products1 = []
while True:
goodsNum=input("请输入要选择的商品编号(如退出购买选择q):")
if goodsNum == "1":
products1.append(products[0])
if goodsNum == "2":
products1.append(products[1])
if goodsNum == "3":
products1.append(products[2])
if goodsNum == "4":
products1.append(products[3])
if goodsNum == "5":
products1.append(products[4])
if goodsNum=="q":
print("--------- 您购买的商品如下 ----------")
for product in products1:
print(product[0] + " ", product[1])
break
元组(Tuple)是一种集合方式,但是展现方式是以()形式,如:(1,2,3)所以在查询使用时可以遍历,可以下标获取某个元素,字典学过程序都知道,其实就时map结构,key,value形式存储
1.元组的定义和访问
1.1 元组的定义
tuple=()代表元组类型
tuple=();
print(type(tuple))
# 运行结果: <class 'tuple'> 代表是元组对象
要注意的是元组里只有一个元素时需要加上逗号,否则就不是元组类型,就是普通的括号里展示的类型,如:tuple=(50),打印类型以后则是int类型,修改为tuple2=(50,)则是元组类型
tuple=(50);
print(type(tuple))
#tuple1=(50); #<class 'int'> 这样写就不是tuple了,就给解析成int类型了
tuple2=(50,);
print(type(tuple2))
运行结果:
1.2 元组的访问
根据下标获取元素
tup1=("abc","def",2000,2020)
print(tup1[0]) # 根据下标获取第一个元素
# 结果:abc
可以用负数获取-1则获取最后一个 ,-2是2000,-3是def,-4是abc,-5就报错了,指针超了
tup1=("abc","def",2000,2020)
print(tup1[-1]) # 获取最后一个元素
# 结果:2020
也可以获取指定哪个到哪个范围区间的下标
tup1=("abc","def",2000,2020)
print(tup1[0:3]) # 获取指定0-3区间元素,左开右闭
# 结果:('abc', 'def', 2000)
当然也可以遍历使用
tup1=("abc","def",2000,2020)
for t in tup1:
print(t)
2. 元组增加修改操作
添加:一旦创建元组,则不可以添加元组元素,否则报错,可以元组与元组之间合并数据,
tup1=(12,34,22)
tup2=("a","b")
tup=tup1+tup2
print(tup)
# 运行结果:(12, 34, 22, 'a', 'b')
修改:元组不支持修改
tup1=(12,34,22)
tup1[0]=7
运行一下:
3.元组删除
元组不可以删除元素,只能整个变量删除,删除完毕在使用会报错
# 元组删除
tup1=(12,34,22)
del tup1 # 删除整个元组变量,而不是某个元素
print(tup1) #del元组以后打印变量会报错,name 'tup1' is not defined
总结:元组的增删改其实是都不允许的,只能够遍历获取等,在实际使用中有时获取的数据库数据等会是元组的形式返回,则需要遍历获取等操作。
4.字典
4.1 字典的访问
字典就和java里的map是一样的格式,python比java还多了其他访问方式,
根据键获取值的一种方式,如果拿一个不存在的键获取值则报错
info={"name":"xiaoduf","age":12}
print(info["name"]) #根据健获取值
print(info["age"])
# 结果
'''
xiaoduf
12
'''
再获取一个性别,字典里是没有的,则会报错
print(info["gender"]) #访问了一个不存在的key会报错
还可以和java一样,用info.get("键")获取值,获取一个不存在的key值不会报错,会返回None,也可以通过第二个参数设置默认的值
info={"name":"xiaoduf","age":12}
print(info.get("gender")) # 访问了一个不存在的key不会报错,默认会返回None
print(info.get("gender","null")) # 访问了一个不存在的key可以自定义一个默认的值
print(info.get("age","33")) # 能找到不会用默认值
# 结果:
'''
None
null
12
'''
4.2 字典的新增、修改
info={"name":"xiaoduf","age":12}
info["id"]="100001"
print("字典新增:",info)
info={"name":"xiaoduf","age":12}
info["id"]="2222"
print("字典修改:",info)
# 运行结果:字典修改: {'name': 'xiaoduf', 'age': 12, 'id': '2222'}
4.3 字典删除
del和pop都是指定健删除某个键值对信息
info={"name":"xiaoduf","age":12}
print("删除前:%s "%info)
del info["name"] # 删除的是键值对
info.pop("age") # 删除的是键值对
print("删除后:%s:"%info)
结果:
4.4 字典清空数据
如果del 删除变量,则整个变量不允许访问,但是可以用clear它只会把数据清空,还可以继续使用变量
info={"name":"xiaoduf","age":12}
info.clear()
print(info) #清空数据还有变量
结果:{}
4.5 字典遍历和查询
可以通过keys()方法获取所有的key,然后通过for循环遍历得到每一个key
info={"name":"xiaoduf","age":12}
print(info.keys()) # 得到所有的健,以列表形式,后续可自己遍历
# 遍历所有的key
for key in info.keys():
print("key:",key)
# 运行结果:
'''
dict_keys(['name', 'age'])
key: name
key: age
'''
可以通过values()方法获取所有的值,然后通过for循环遍历得到每一个值
info={"name":"xiaoduf","age":12}
print(info.values()) # 得到所有的值,列表形式
# 遍历所有的值
for value in info.values():
print("value:",value)
# 运行结果:
'''
dict_values(['xiaoduf', 12])
value: xiaoduf
value: 12
'''
可以通过items()方法获取到键值项,进行遍历得到键值,这样一起得到key和value
info={"name":"xiaoduf","age":12}
print(info.items()) # 得到所有的项,最后形式是每一个键值对是一个元组
for key,vlaue in info.items():
print("%s:%s"%(key,vlaue))
# 运行结果:
'''
dict_items([('name', 'xiaoduf'), ('age', 12)])
name:xiaoduf
age:12
'''
5.集合SET
在python中集合Set格式形式是花括号表达,无索引,除里这个和其他语言相似,过率重复元素,无序集合
5.1 Set的定义
1. 可以花括号直接定义,可以set([1,,2,3])定义,打印它两的类型都是set集合,当然打印数据也是花括号展现形式
# set和dict类似,也是一组key的集合,但不存储value,key不能重复,是无需的,重复会自动过率掉
sets={"s","s","e"}
print(type(sets))
sdatas=set([1,2,3])
print(type(sdatas))
print(sdatas)
#运行结果:
'''
<class 'set'>
<class 'set'>
print(sdatas)
'''
重复的数据可直接去重展示
sdatasRep=set([1,2,3,1,2])
print(sdatasRep)
# 运行结果:{1, 2, 3}
当然了和其他的所有一样,想要得到所有的数据遍历即可
sdatas=set([1,2,3])
for s in sdatas:
print(s)
5.2 添加、删除、更新
其实都大同小异的,所以就快速的说下Set怎么使用
添加通过add()
sdatas=set([1,2,3])
sdatas.add(4)
# sdatas结果是:{ 1, 2, 3, 4}
Set不允许修改集合元素,可以把两个Set合并,通过update()方法实现
sdatas=set([1,2,3])
sdatas1=set([4,5,6])
sdatas.update(sdatas1)
print(sdatas)
# sdatas结果是:{1, 2, 3, 4, 5, 6}
删除:remove(),pop(),clear(),del
remove()删除指定元素
sdatas=set([1,2,3])
sdatas.remove(3) #移除选中的元素不是下标,没有这个元素会报错
print(sdatas)
# 运行结果:{1, 2}
pop()则清除元素第一个元素
sdatas=set([1,2,3])
sdatas.pop() #清除第一个元素
# sdatas结果是:{2, 3} ,
clear清空数据
sdatas.clear() #清空数据
print(sdatas)
# sdatas结果是:set()
del 则是删除元素变量,删除完毕则不可使用了