题6 购物车 题4 用到解构
# 1.
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
# a. 元组的特性
'''
元组是只读列表,只能看,不在支持增\删\改操作
使用 ( ) 表示元组
元组是可迭代对象,可以使用for循环
如果元组中只有一个元素表示为:(元素,) 必须要有逗号
空元祖:tuple()
'''
# b.
'''
tu变量中第一个元素"alex"不可被修改
'''
# c. k2 对应的类型,若能修改则添加"seven"
'''
k2 对应的值是列表,可以修改.
'''
tu[1][2].get("k2").append("seven")
print(tu)
# d. k3 对应的类型,若能修改则添加"seven"
'''
k3对应的值是元组,元组属于只读列表是不可修改的
'''
# 2.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# a. 输出所有的key
for i in dic.keys():
print(i)
# b. 输出所有的value
for i in dic.values():
print(i)
# c.
for i in dic.items():
print(i)
# d. 添加一个键值对,"k4": "v4"
dic.setdefault("k4","v4")
print(dic)
# e. 修改字典中 "k1" 对应的值为 "alex"
dic["k1"]="alex"
print(dic)
# f. k3对应的值中追加一个元素 44
dic.get("k3").append(44)
print(dic)
# g. k3对应的值的第 1 个位置插入个元素 18
dic.get("k3").insert(0,18)
print(dic)
# 3.
av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌丝请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]
},
"大陆":{
"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}
# a. ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个元素:'量很大'
av_catalog.get("欧美").get("www.youporn.com").insert(1,"量很大")
print(av_catalog)
# b. ["质量很高,真的很高","全部收费,屌丝请绕过"] 删除第2个
av_catalog.get("欧美").get("x-art.com").pop(1)
print(av_catalog)
# c. ["质量很高,真的很高","全部收费,屌丝请绕过"]列表中添加"金老板最喜欢这个"
av_catalog.get("欧美").get("x-art.com").append("金老板最喜欢这个")
print(av_catalog)
# d. ["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写
content=av_catalog.get("日韩").get("tokyo-hot")[1]
av_catalog.get("日韩").get("tokyo-hot")[1]=content.upper()
print(av_catalog)
# e. 给'大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']
av_catalog.get("大陆")["1048"]=["一天就封了"]
print(av_catalog)
# f. 删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]键值对。
del av_catalog.get("欧美")["x-art.com"]
print(av_catalog)
# g. 给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素,加上一句话:'可以爬下来'
ss=av_catalog.get("大陆").get("1024")[0]
av_catalog.get("大陆").get("1024")[0]=ss+",可以爬下来"
print(av_catalog)
# 4. 字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}
#方法一:
str1="k:1/k1:2/k2:3/k3:4"
lis1=str1.split("/")
dic={}
for i in lis1:
lis2=i.split(":")
dic.setdefault(lis2[0],int(lis2[1]))
print(dic)
#方法二: 解构
str1="k:1/k1:2/k2:3/k3:4"
lis1=str1.split("/")
dic={}
for i in lis1:
a,b=i[0],i[1]
dic.setdefault(a,b)
# 5. 有如下值li= [11,22,33,44,55,66,77,88,99,90],
# 将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
#即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
li=[11,22,33,44,55,66,77,88,99,90]
dic={"k1":[],"k2":[]}
for i in li:
if i>66:
dic.get("k1").append(i) #get() 也可用 setdefault()
elif i<66:
dic.get("k2").append(i)
print(dic)
# 6. 购物车
#方法一:
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]
print("1", goods[0].get("name"), goods[0].get("price"))
print("2", goods[1].get("name"), goods[1].get("price"))
print("3", goods[2].get("name"), goods[2].get("price"))
print("4", goods[3].get("name"), goods[3].get("price"))
while 1:
num=input("请用户选择商品的序号:")
if num=="1":
print(goods[0].get("name"), goods[0].get("price"))
elif num=="2":
print(goods[1].get("name"), goods[1].get("price"))
elif num=="3":
print(goods[2].get("name"), goods[2].get("price"))
elif num=="4":
print(goods[3].get("name"), goods[3].get("price"))
elif num=="Q" or num=="q":
break
else:
print("输入序号有误,请重新输入!")
#方法二:
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]
while 1:
for i in goods:
print(goods.index(i)+1,i["name"],i["price"])
num=input("请输入商品序号:")
for i in goods:
print(goods.index(i) + 1, i.get("name"), i.get("price"))
str_input=input("请输入序号,输入Q或q退出:")
if str_input.isdigit() and int(str_input)<len(goods):
i_index=int(str_input)-1
print(goods[i_index]["name"],goods[i_index]["price"])
elif str_input.upper()=="Q":
break
else:
print("输入有误,请重新输入!")