作业一:将字符串”k:1/k1:2/k2:3/k3:4”处理成字典(比较难)
- 方法一

1 list = 'k:1/k1:2/k2:3/k3:4' 2 new_list = list.split("/") 3 print(new_list) 4 dic = {} 5 for i in new_list: 6 k,v = i.split(":") 7 dic[k] = int(v) 8 print(i) 9 print(dic)
- 方法二

1 list = [] 2 list_key = [] 3 list_value = [] 4 str = "k:1/k1:2/k2:3/k3:4" 5 str = str.split('/') 6 for i in str: 7 l = i.split(':') 8 list.append(l) 9 # print(list) 10 for j in list: 11 # print(j[0]) 12 # print(j[1]) 13 list_key.append(j[0]) 14 list_value.append(j[1]) 15 d = dict(zip(list_key,list_value)) 16 print(d) 17 # {'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
作业二:有如下list=[11,22,33,44,55,66,77,88,99],将所有大于55的值保存在字典的第一个key中,
将小于55的值保存至第二个key中。形式如下:{“k1”:[n>55],”k2”:[n<55]}
- 方法一

1 list=[11,22,33,44,55,66,77,88,99] 2 dic ={'k1':[],'k2':[]} 3 for i in list: 4 if i == 55: 5 continue 6 elif i > 55: 7 dic.setdefault('k1').append(i) 8 else: 9 dic.setdefault('k2').append(i) 10 print(dic)
- 方法二

1 list1 = [] 2 list2 = [] 3 list_key = ['k1','k2'] 4 list_value = [] 5 list=[11,22,33,44,55,66,77,88,99] 6 for i in list: 7 if i >= 55: 8 list1.append(i) 9 else: 10 list2.append(i) 11 list_value.append(list1) 12 list_value.append(list2) 13 # print(list_value) 14 d = dict(zip(list_key,list_value)) 15 print(d)
作业三:显示下图,做出如下功能
序号 | 名称 | 价格 |
1 | 华为P30 | 4900 |
2 | 香格里拉三日游 | 99 |
······ | ······ | ······ |
功能1:用户输入选择序号,自动打印出名称和价格
功能2:输入序号有误,提示、重新输入
功能3:输入 q或者 Q,退出程序
- 方法一

1 goods = [{'name': "华为p30", 'price': 4900}, 2 {'name': '香格里拉三日游', 'price': 99}, 3 {'name': 'coffee', 'price': 28}, 4 {'name': '4D_movie', 'price': 100}] 5 for i in goods: 6 print(goods.index(i) + 1 ,i['name'],i['price']) 7 while True: 8 str_input = input('输入你想要的商品的序号,当输入Q/q退出系统:') 9 if str_input.isdigit() and 0 < int(str_input) <= len(goods): 10 a = int(str_input) -1 11 print(goods[a]['name'],goods[a]['price']) 12 elif str_input.upper() == 'Q': 13 print('奴家恭送小主') 14 break 15 else: 16 print("输入有误,请重新选择")
- 方法二

1 # 首先根据题目相关信息创建字典 2 list_serial = ['1','2'] 3 list_name = ['华为P30','香格里拉三日游 '] 4 list_price = ['4900','99'] 5 d1 = dict(zip(list_serial,list_name)) 6 d2 = dict(zip(list_name,list_price)) 7 def info(n): 8 if d1.get(n) != None: 9 print("你要去的景点信息为:","name:",d1.get(n),"|","price:",d2.get(d1.get(n))) 10 else: 11 print("输入序号有误,请重新输入") 12 if __name__ == '__main__': 13 while True: 14 n = input('请输入要查询景点信息的序号:') 15 if n.upper() == "Q": 16 print("退出程序") 17 break 18 else: 19 info(n)
- 方法三

1 list_serial = [] #存储景点信号的列表 2 list_name = [] #存储景点名称 3 list_price = [] #存储价格 4 def input_info(): # 建立景点信息 5 while True: 6 serial = input("请输入序号:") 7 if serial in list_serial: # 如果输入的序号已经存在,请重新输入 8 print("此序号已有,请重新输入") 9 # python中break和continue的用法和区别详解 https://blog.csdn.net/wls666/article/details/90408393 10 continue # 只结束本次循环,并不终止整个循环(while循环)的执行 11 if serial.upper() == "Q": # 如果输入的值等于q或Q,则停止录入景点信息 upper()函数是转换为大写字符 lower()小写 12 break # 跳出while循环 13 name = input("请输入景点名称:") 14 if name in list_name: 15 print("此景点已有,请重新输入") 16 continue 17 if name.upper() == "Q": 18 break 19 price = input("请输入门票:") 20 if price.upper() == "Q": 21 break 22 if serial not in list_serial: 23 list_serial.append(serial) 24 if name not in list_name: 25 list_name.append(name) 26 list_price.append(price) 27 28 def save_info(): # 存储景点信息 29 print("***************************************") 30 print("所有景点信息为:") 31 for key, value in d1.items(): # 遍历d1字典中的键和值,对可迭代对象d1.items()的每一个元素((serial,name))进行解包(key, value = (serial, name)) 32 print("serial:", key, "|", "name:", value, "|", "price:", d2.get(value)) 33 print("***************************************") 34 35 36 def out_info(n): # 打印景点信息 37 if d1.get(n) != None: # 判断景点序号是否存在 38 print("------------------------------------------") 39 print("你要去的景点信息为:", "name:", d1.get(n), "|", "price:", d2.get(d1.get(n))) 40 print("------------------------------------------") 41 else: 42 print("没有此景点,请重新输入") 43 44 if __name__ == '__main__': 45 print("请输入你的景点信息,输入Q/q退出") 46 input_info() # 调用建立景点信息函数 47 # zip() 函数用于将可迭代的对象作为参数, 48 # 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 49 d1 = dict(zip(list_serial, list_name)) # 映射函数方式来构造字典 list_serial和list_name都是列表 50 d2 = dict(zip(list_name, list_price)) 51 save_info() 52 while True: 53 n = input('请输入要查询景点信息的序号:') 54 if n.upper() == "Q": 55 print("奴家恭送小主") 56 break 57 else: 58 out_info(n) # 调用打印景点信息函数