python4.30每周一练
1.已知字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},实现以下功能
a.遍历字典 dic 中所有的key
b.遍历字典 dic 中所有的value
c.循环遍历字典 dic 中所有的key和value
d.添加一个键值对"k4","v4",输出添加后的字典 dic
e.删除字典 dic 中的键值对"k1","v1",并输出删除后的字典 dic
f.删除字典 dic 中 'k5' 对应的值,若不存在,使其不报错,并返回None
g.获取字典 dic 中“k2”对应的值
h.已知字典dic2 = {'k1':"v111",'a':"b"} 编写程序,使得dic2 = {'v111':"k1",'b':"a"}
dic = {"k1": "v1", "k2": "v2", "k3": "v3"}#a
for key in dic:print(key)#b
for value in dic.values():print(value)#c
for key,value in dic.items():print(key,value)#d
dic["k4"] = "v4"
print(dic)#e
dic.pop("k1")
print(dic)#f
if dic.get("k5"):result = dic.pop("k5")print(result)
else:print(None)#g
value = dic["k2"]#h
dic2 = {'k1':"v111",'a':"b"}
dic3 = {}
for key,value in dic2.items():dic3[value] = key
dic2 = dic3
print(dic2)
2.已知列表list1 = [11,22,11,33,44,55,66,55,66],统计列表中每个元素出现的次数,生成一个字典,结果为{11:2,22:1.....}
list1 = [11,22,11,33,44,55,66,55,66]
dict1 = {}
for num in list1:if num not in dict1:dict1[num] = 1else:dict1[num] += 1
3.已知如下列表students,在列表中保存了6个学生的信息,根据要求完成下面的题目
students = [
{'name': '小花', 'age': 19, 'score': 90, 'gender': '女', 'tel':
'15300022839'},
{'name': '明明', 'age': 20, 'score': 40, 'gender': '男', 'tel':
'15300022838'},
{'name': '华仔', 'age': 18, 'score': 90, 'gender': '女', 'tel':
'15300022839'},
{'name': '静静', 'age': 16, 'score': 90, 'gender': '不明', 'tel':
'15300022428'},
{'name': 'Tom', 'age': 17, 'score': 59, 'gender': '不明', 'tel':
'15300022839'},
{'name': 'Bob', 'age': 18, 'score': 90, 'gender': '男', 'tel':
'15300022839'}
]
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.删除性别不明的所有学生
g.将列表按学生成绩从大到小排序
# a.统计不及格学生的个数
count = 0
for stu_dict in students:if stu_dict["score"] < 60:count += 1
print("不及格学生的个数:%d" % (count))# b.打印不及格学生的名字和对应的成绩
for stu_dict in students:if stu_dict["score"] < 60:print("姓名:%s,成绩:%d" % (stu_dict['name'],stu_dict['score']))# c.统计未成年学生的个数
count = 0
for stu_dict in students:if stu_dict["age"] < 18:count += 1
print("未成年学生的个数:%d" % (count))# d.打印手机尾号是8的学生的名字
for stu_dict in students:if stu_dict["tel"][-1] == "8":print("姓名:%s" % (stu_dict['name']))# e.打印最高分和对应的学生的名字
# 方式一max_score = students[0]['score']for stu_dict in students:if stu_dict['score'] > max_score:max_score = stu_dict['score']# 方式二
max_score = max([stu_dict["score"] for stu_dict in students])
print("最高成绩为:%d" % (max_score))
for stu_dict in students:if stu_dict['score'] == max_score:print("姓名:%s,成绩:%d" % (stu_dict['name'],max_score))# f.删除性别不明的所有学生
# 方式一new_students = []for stu_dict in students:if stu_dict["gender"] != "不明":new_students.append(stu_dict)print(new_students)# 方式二for stu_dict in students[:]:if stu_dict['gender'] == "不明":students.remove(stu_dict)print(students)# g.将列表按学生成绩从大到小排序
# 方式一:冒泡排序for i in range(len(students) - 1):for j in range(len(students) - i - 1):# 比较的是成绩,交换的是字典if students[j]["score"] < students[j + 1]['score']:students[j],students[j + 1] = students[j + 1],students[j]print(students)# 扩展:方式二:sort(key),key用于指定排序的规则,此处使用的是匿名函数
students.sort(key=lambda stu_dict:stu_dict['score'],reverse=True)
print(students)
4.写一个学生作业情况录入并查询的小程序
a.录入学生作业情况:字典添加
b.查看学生作业情况:字典查询
c.录入时允许输入3次,3次输入不正确提示失败次数过多,禁止继续录入
homeworks = {'Amy':{'2018.3.22':'未交','2018.3.23':'已交'},'Lily':{'2018.3.22':'未交','2018.3.23':'未交'},}
chioce = {'1':'查询','2':'录入'} #定义字典,可以避免输入‘0’或‘1’以外的选择时报错
#user_chioce input是字符串,如果用int转化非数字的字符串会报错,所以将key定义为字符串‘1’,而非数字1
user_chioce = input('请输入您的选择:1为查询学生作业情况,2为录入学生作业情况').strip()
if chioce.get(user_chioce) == '查询': #用get方法,输入key不在字典中不会报错。用chioce[user_choice],输入key不在字典中会报错name = input('请输入要查询的学生姓名').strip()if name == '':print('查询学生姓名不能为空')elif name in homeworks: #判断key是否在字典中存在print('%s的作业情况是%s'%(name,homeworks[name]))#字典查询else:print('查询学生不存在')
elif chioce.get(user_chioce) == '录入':state = {'0':'未交','1':'已交'} #定义字典,可以避免输入‘0’或‘1’以外的选择时报错#放在循坏外,避免多次初始化,优化性能for i in range(3):enter_name = input('请输入要录入的学生姓名').strip()enter_date = input('请输入要录入学生作业的日期').strip()enter_state = input('请输入学生作业状态:0为未交,1为已交').strip()if state.get(enter_state): #只要有状态就可以,不需要判断状态等于‘已交’或‘未交’if enter_name == '' or enter_date == '':print('学生姓名及作业日期不能为空')else:if enter_name in homeworks:homeworks[enter_name].update({enter_date:state[enter_state]})#学生已存在,更新子字典else:homeworks[enter_name] = {enter_date:state[enter_state]}#学生不存在,直接添加新k-vprint('%s的作业情况是%s'%(enter_name,homeworks[enter_name]))print('所有学生作业情况为%s' % homeworks)breakelse:print('输入学生状态有误')
else:print('选择输入有误')
python4.30每周一练相关推荐
- Python4.22每周一练
一.列表问题 1.列表拷贝 # 1.深浅拷贝 """ =:怎么都会改 列表.copy()和copy.copy():只有修改一维列表中元素的时候,一个更改,另外一个不受影响 ...
- 2019年蓝桥杯每周一练题目练习
每周一题之1 3n+1问题 PC/UVa IDs: 110101/100 Popularity: A Success rate: low Level: 1 测试地址: https://vjudge.n ...
- php编程数学思维题,一年级数学:思维训练题(13套),打印每周一练,益智提升专用...
一年级数学:思维训练题(13套),打印每周一练,益智提升专用! 众所周知,思维对于数学的学习是最为关键的,尤其是在小学阶段,需要趁早的培养孩子的逻辑思维能力.思维不是凭空想象,而是要依据手里的题目,能 ...
- 学习python数据分析的30个练手数据+4个数据集网站
前几天发了一个博文:懂点excel作图, 怎么让pyechart作的图更具"职场范"呢?丨pyechart工作作图模板, 一不小心上了热榜, 感谢小伙伴们的支持, 以后会多总结发更 ...
- 百度之星试题每周一练
百度之星,是全球最大的中文搜索引擎,百度公司面向中国高校学生和编程爱好者所举办的高水平的程序设计大赛.他所考试的题目,全部都是算法的题目. 鄙人虽然是一个.net程序员,在工作之余,喜爱算法. 这个问 ...
- 蓝桥杯 每周一练 第一周(3n+1问题)
[问题描述] 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2:如果 n 是奇数,把它乘 3 加1. 用新得到的值重复上述步骤,直到 n = 1 时停止.例如,n = 22 时 ...
- 【leetcodeMySQL每周一练】- 5道题带你练习mysql
- 【光纤通信课程-每周一练(含答案)】第九周—波分复用系统
第九周-波分复用系统 单元测试题(红色选项即正确答案) 1.单选(2分) DWDM与CWDM的主要区别可以说DWDM使用的波长间隔 A.很大,常常大于0.8nm B.很小,常常小于0.8nm C.很大 ...
- 【光纤通信课程-每周一练(含答案)】第十周—光纤通信系统设计与性能分析
第十周-光纤通信系统设计与性能分析 单元测试题(红色选项即正确答案) 1.单选(2分) 已知一个565Mbit/s单模光纤传输系统,其系统总体要求如下: (1)光纤通信系统光纤损耗为0.1dB/km, ...
最新文章
- 更新版vimrc(java自动补全)
- 本地Git连接服务器git不用每次输入用户名和密码的方法
- OpenCV图像处理使用笔记(二)——图像矩阵的掩膜操作
- 讲讲大厂面试必考的假设检验
- 360——新式的流氓
- Enterprise Library—缓存应用程序块
- 北林oj-算法设计与分析-Tom palindrome number
- ABP源码分析二十五:EventBus
- 1006.arm 板中杀死进程
- Android设计模式(1)----单例模式
- C++ 原子操作 std::atomic<int>
- windows重置net use或者SMB协议
- 百度云链接使用迅雷下载时提示有误的问题解决
- excel中怎么拆分表格
- 大数据技术之Linux
- CCS:Type region `APP_CODE_MEM' overflowed by 641240 b
- 炒币机器人:炒币投资要大气
- 深信服 行为感知系统 c.php 远程命令执行漏洞
- 【Kali_017】软件包管理synaptic
- Yocto、Poky、OpenEmbedded 之间的关系