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

  • 方法一
 list = 'k:1/k1:2/k2:3/k3:4'
new_list = list.split("/")
print(new_list)
dic = {}
for i in new_list:
k,v = i.split(":")
dic[k] = int(v)
print(i)
print(dic)

作业 1 答案 1

  • 方法二
 list = []
list_key = []
list_value = []
str = "k:1/k1:2/k2:3/k3:4"
str = str.split('/')
for i in str:
l = i.split(':')
list.append(l)
# print(list)
for j in list:
# print(j[0])
# print(j[1])
list_key.append(j[0])
list_value.append(j[1])
d = dict(zip(list_key,list_value))
print(d)
# {'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]}

  • 方法一
 list=[11,22,33,44,55,66,77,88,99]
dic ={'k1':[],'k2':[]}
for i in list:
if i == 55:
continue
elif i > 55:
dic.setdefault('k1').append(i)
else:
dic.setdefault('k2').append(i)
print(dic)

作业 2 答案 1

  • 方法二
 list1 = []
list2 = []
list_key = ['k1','k2']
list_value = []
list=[11,22,33,44,55,66,77,88,99]
for i in list:
if i >= 55:
list1.append(i)
else:
list2.append(i)
list_value.append(list1)
list_value.append(list2)
# print(list_value)
d = dict(zip(list_key,list_value))
print(d)

作业 2 答案 2

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

序号 名称 价格
1 华为P30 4900
2 香格里拉三日游 99
······ ······ ······

功能1:用户输入选择序号,自动打印出名称和价格

功能2:输入序号有误,提示、重新输入

功能3:输入 q或者 Q,退出程序

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

作业 3 答案 1

  • 方法二
 # 首先根据题目相关信息创建字典
list_serial = ['','']
list_name = ['华为P30','香格里拉三日游 ']
list_price = ['','']
d1 = dict(zip(list_serial,list_name))
d2 = dict(zip(list_name,list_price))
def info(n):
if d1.get(n) != None:
print("你要去的景点信息为:","name:",d1.get(n),"|","price:",d2.get(d1.get(n)))
else:
print("输入序号有误,请重新输入")
if __name__ == '__main__':
while True:
n = input('请输入要查询景点信息的序号:')
if n.upper() == "Q":
print("退出程序")
break
else:
info(n)

作业 2 答案 2 中极版

  • 方法三
 list_serial = [] #存储景点信号的列表
list_name = [] #存储景点名称
list_price = [] #存储价格
def input_info(): # 建立景点信息
while True:
serial = input("请输入序号:")
if serial in list_serial: # 如果输入的序号已经存在,请重新输入
print("此序号已有,请重新输入")
# python中break和continue的用法和区别详解 https://blog.csdn.net/wls666/article/details/90408393
continue # 只结束本次循环,并不终止整个循环(while循环)的执行
if serial.upper() == "Q": # 如果输入的值等于q或Q,则停止录入景点信息 upper()函数是转换为大写字符 lower()小写
break # 跳出while循环
name = input("请输入景点名称:")
if name in list_name:
print("此景点已有,请重新输入")
continue
if name.upper() == "Q":
break
price = input("请输入门票:")
if price.upper() == "Q":
break
if serial not in list_serial:
list_serial.append(serial)
if name not in list_name:
list_name.append(name)
list_price.append(price) def save_info(): # 存储景点信息
print("***************************************")
print("所有景点信息为:")
for key, value in d1.items(): # 遍历d1字典中的键和值,对可迭代对象d1.items()的每一个元素((serial,name))进行解包(key, value = (serial, name))
print("serial:", key, "|", "name:", value, "|", "price:", d2.get(value))
print("***************************************") def out_info(n): # 打印景点信息
if d1.get(n) != None: # 判断景点序号是否存在
print("------------------------------------------")
print("你要去的景点信息为:", "name:", d1.get(n), "|", "price:", d2.get(d1.get(n)))
print("------------------------------------------")
else:
print("没有此景点,请重新输入") if __name__ == '__main__':
print("请输入你的景点信息,输入Q/q退出")
input_info() # 调用建立景点信息函数
# zip() 函数用于将可迭代的对象作为参数,
# 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
d1 = dict(zip(list_serial, list_name)) # 映射函数方式来构造字典 list_serial和list_name都是列表
d2 = dict(zip(list_name, list_price))
save_info()
while True:
n = input('请输入要查询景点信息的序号:')
if n.upper() == "Q":
print("奴家恭送小主")
break
else:
out_info(n) # 调用打印景点信息函数

作业 3 答案 3 高级版

Python习题003的更多相关文章

  1. Python练习题 003:完全平方数

    [Python练习题 003]一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? --------------------------------------- ...

  2. Python [习题] 文件操作:目录间copy 文件

    [习题] 指定一个源文件,实现copy到目标目录.例如把/tmp/sample1.txt 拷贝到/tmp/sample2.txt原文件需要有读权限(默认rt权限),目标文件需要给写(w即可)权限. I ...

  3. python习题实例(上)_update18/07/03

    用以记录python学习过程中做过的小习题~ ヾ(◍°∇°◍)ノ゙ 1.生成两个列表,分别存放将100以内的偶数&奇数 odd_number=[] even_number=[] for i i ...

  4. 笨办法学Python - 习题11-12: Asking Questions & Prompting People

    目录 1.习题 11: 提问 2.习题 12: 提示别人 3.总结 1.习题 11: 提问 学习目标:了解人机交互场景,熟悉raw_input 的用法. 1.在 Python2.x 中 raw_inp ...

  5. 笨办法学Python - 习题8-10: Printing & Printing, Printing

    目录 1.习题 8: 打印,打印 2.习题 9: 打印,打印,打印 3.习题 10: 那是什么? 3.1.转义序列: 4.习题总结: 1.习题 8: 打印,打印 学习目标:继续学习 %r 的格式化输出 ...

  6. 笨办法学Python - 习题6-7: Strings and Text & More Printing

    目录 1.习题 6: 字符串(string) 和文本 2.加分习题: 3.我的答案 4.习题总结 5.习题 7: 更多打印 6.习题总结 1.习题 6: 字符串(string) 和文本 学习目标:了解 ...

  7. 笨办法学Python - 习题5: More Variables and Printing

    1.习题 5: 更多的变量和打印 学习目标:了解用户输入方法,明白pthon2和Python3之间的用户输入的区别.了解格式化字符串(format string)的概念,学会如何创建包含变量内容的字符 ...

  8. 笨办法学Python - 习题4: Variables and Names

    1.习题 4: 变量(variable)和命名 学习目标:了解Python中变量的定义,学习定义简明易记的变量名 变量:变量是存储内存中的值,就是每定义一个变量就会在内存中开辟一个空间.基于变量的类型 ...

  9. 笨办法学Python - 习题3: Numbers and Math

    目录 习题 3: 数字和数学计算 算术运算符 加分习题: 我的答案: 总结: 扩展: Python比较运算符 Python赋值运算符 Python位运算符 Python逻辑运算符 Python成员运算 ...

随机推荐

  1. ELK系列(7) - 测试环境下Logstash异常退出:block in multi_receive_encoded

    问题与分析 在本地测试无误后将ELK部署到了测试环境,结果第二天发现Logstash挂掉了,一开始以为是自动部署之类导致的问题.之后几天时间里Logstash总是会down掉,查看了下日志文件,发现报 ...

  2. [WEB安全]XXE漏洞总结

    目录 0x00 XML基础 0x01 XML文档结构 0x02 DTD 0x03 实体 0x04 XXE漏洞 0x05 总结一些payload 0x06 XXE漏洞修复与防御 0x07 参考链接 0x ...

  3. dp之斜率优化

    前几天想练练思维,所以从cf上随便找了一道dp题,看完题意后第一感觉很简单,就是简单的区间dp题,但是看到数据范围的我顿时就懵了,(1≤n≤105) emmmmmmmm,按照普通的思路肯定会超时的.. ...

  4. codeforces1187E

    题目链接:http://codeforces.com/problemset/problem/1187/E E. Tree Painting You are given a tree (an undir ...

  5. Fluent 时间步长【转载】

    转载自:http://blog.sina.com.cn/s/blog_4ada3be301011rjp.html 用FLUENT计算非稳态问题,是不是在计算时必须保证在每个时间步timestep里都要 ...

  6. 怎么在for循环中新建出不同的list

    public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 1, 1, 1, 1, 3, ...

  7. vue 脚手架安装

    首先安装node.js npm 配置全局安装路径和缓存 node 安装路径下新建两个目录,node_cache和node_global npm config set prefix "E:\n ...

  8. ArcGIS数据建模 (模型构建器modelbuilder) 培训视频 5章28小节587分钟视频 51GIS网站上线

    网址:http://www.51gis.com.cn/kecheng.html?id=358

  9. MediaPlayer: MediaPlayer中的prepare方法和prepareAsync方法的区别

    prepare方法是将资源同步缓存到内存中,一般加载本地较小的资源可以用这个,如果是较大的资源或者网络资源建议使用prepareAsync方法,异步加载.但如果想让资源启动,即start()起来,因为 ...

  10. <JavaScript>尺寸类样式的获取

    尺寸类样式的获取 offsetHeight HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数.(content+ ...