Python习题003

作业一:将字符串”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 答案 1
  • 方法二
 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'}
作业 1 答案 2

作业二:有如下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)
作业 2 答案 1
  • 方法二
 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)
作业 2 答案 2

作业三:显示下图,做出如下功能

序号 名称 价格
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("输入有误,请重新选择")
作业 3 答案 1
  • 方法二
 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)
作业 2 答案 2 终极版
  • 方法三
 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)  # 调用打印景点信息函数
作业 3 答案 3 高级版

猜你喜欢

转载自www.cnblogs.com/oito/p/11207271.html
003