考前综合练习-第七章
1、县区查询
类型:文件
描述
附件中的文本文件里包含河北省的地区信息,
文件第一行为省名和地级市名,其他每行的第一个地名为地级市名,后面地名为该地区的下辖区、县和县级市的名称,如下所示:
河北,石家庄,唐山,秦皇岛,邯郸,邢台,保定,张家口,承德,沧州,廊坊,衡水 石家庄,长安区,桥东区,...,藁城市,鹿泉市 唐山,路南区,路北区,...,遵化县,迁安县 秦皇岛,海港区,三海关区...,抚宁县,卢龙县 邯郸,邯山区,丛台区,...,曲周县,武安县 邢台,桥东区,桥西区,...,南宫市,沙河西 保定,新市区,北市区,...,安国市,高碑店市 张家口,桥东区,桥西区,...,赤城县,崇礼县 承德,双桥区,双滦区,...,围场蒙古做自治县 沧州,新华区,运河区,...,河间市,黄骅市 廊坊,安次区,广阳区,...,三河市,霸州市 衡水,桃城区,枣强县,...,深州市,冀州县
下面代码可以将该文件的内容读到列表中,运行这段代码,查看输出的列表内容,完成要求的操作:
with open('hebei.txt', 'r', encoding='utf-8') as file: district_ls = [x.split(',') for x in file] print(district_ls)
(1)如果用户输入的是地级市名,以列表形式输出其下辖所有下辖区、县和县级市名称。
(2)如果用户输入的是市辖区、县或县级市名,则输出其上一级的地级市名,若有的市辖区名在不同地级市中同时存在时,输出全部地级市名。
输入格式
输入一个地区或县区名
输出格式
输出其下辖所有区县名称或其上一级的地级区名(有的县区名或能在不同地级区中同时存在,则分多行打印几个上级地区名。)
示例1
text
输入:唐山
输出:['路南区', '路北区', '古治区', '开平区', '丰南区', '丰润区', '曹妃甸区', '滦县', '滦南县', '乐亭县', '迁西县', '玉田县', '遵化县', '迁安县']
示例2
text
输入:鸡泽县
输出:邯郸
代码:
python
# -*- coding = utf-8 -*-
# @Author:为一道彩虹
if __name__ == '__main__':
# 读取hebei.txt文件数据
district_ls = []
with open('hebei.txt', 'r', encoding='utf-8') as file:
for line in file.readlines():
# 进行分割每行数据并存储到列表中
district_ls.append(line.strip().split(','))
district_ls_new = {}
# 根据题目要求处理数据存储格式,遍历每一行数据
for row in district_ls:
# print(row)
# 创建一个新的列表来存储该地区的数据
data_li = []
for index in range(1, len(row)):
# print(row[index])
# 添加数据到data_li列表中
data_li.append(row[index])
# 存储到字典中,键为地区名,值为data_li列表:data = {'地区名': ['xxx', 'xxx'], '地区名': ['xxx', 'xxx']}
district_ls_new[row[0]] = data_li
# 获取用户输入的一个地区或县区名
district = input()
# 判断用户输入的是否是地区名
if district in district_ls_new:
# 如果输入的是地区名,输出该地区包含的县区名列表
print(district_ls_new.get(district))
else:
# 如果输入的不是地区名,则遍历字典的值列表,判断输入的县区名是否在任何一个地区名的值列表中
for city, districts in district_ls_new.items():
if district in districts:
print(city)
2、查询高校名
类型:文件处理
描述
text
#以下代码的作用是:
#打开文件,创建一个名为Uname的对象,Uname.readlines()的作用是将文件内容逐行读取到列表中
#文件的每行为一个以'\n'结尾的字符串,做为列表ls的一个元素
#列表ls的第一个元素ls[0]的内容是:'序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注\n'
with open('university.csv','r',encoding='utf-8') as Uname:
ls = Uname.readlines()
#print(ls)
#输出:['序号,学校名称,学校标识码,主管部门,所在地,办学层次,备注\n',
# '1,北京大学,4111010001,教育部,北京市,本科,\n',
# '2,中国人民大学,4111010002,教育部,北京市,本科,\n',
# '3,清华大学,4111010003,教育部,北京市,本科,\n',
# ......
# ]
附件'university.csv'中包含北京主要高校的序号、学校名称、学校标识码、主管部门、所在地、办学层次、备注等信息,以逗号分隔符。 参考提示代码,将文件内容逐行读取到列表中,根据用户输入一个关键字,查询学校名称包含用户输入关键字的学校名并输出。
输入格式
输入一个关键字
输出格式
包含关键字的全部学校名
示例
text
输入:
中央
输出:
中央财经大学
中央音乐学院
中央美术学院
中央戏剧学院
中央民族大学
代码:
python
# -*- coding = utf-8 -*-
# @Author:为一道彩虹
if __name__ == '__main__':
# 读取university.csv文件数据
with open('university.csv', 'r', encoding='utf-8') as Uname:
ls = Uname.readlines()
# 获取用户输入的关键字
keyword = input()
# 存在包含关键字的学校名称
matching_schools = []
# 遍历每一行数据(从第二行开始,因为第一行是表头)
for line in ls[1:]:
# 将每行数据按逗号分割
columns = line.strip().split(',')
# 学校名称在第二列(索引为1)
school_name = columns[1]
# 判断学校名称是否包含用户输入的关键字
if keyword in school_name:
# 如果包含,添加到结果列表
matching_schools.append(school_name)
# 输出所有匹配的学校名称
for school in matching_schools:
print(school)
3、求温度平均值(1)
下面是一个传感器采集数据文件sensor-data.txt的一部分: 2018-02-28 01:03:16.33393 19.3024 38.4629 45.08 2.68742 2018-02-28 01:06:16.013453 19.1652 38.8039 45.08 2.68742 2018-02-28 01:06:46.778088 19.175 38.8379 45.08 2.69964 ...... 其中,每行是一个读数,空格分隔多个含义,分别包括日期、时间、温度、湿度、光照和电压。其中,光照处于第5列。
请编写程序,统计并输出传感器采集数据中温度部分的平均值,所有值保留小数点后2位。报错输出用异常处理机制(try-except)。输出中冒号为中文符号。
python
输入
sensor-data.txt
输出
平均的温度值是:20.09
输入
s-data.txt
输出
文件打开错误
代码:
python
# -*- coding = utf-8 -*-
# @Author:为一道彩虹
if __name__ == '__main__':
# 获取输入文件名
filename = input()
# 根据题目要求捕获异常
try:
# 打开文件,使用 utf-8 编码方式读取
with open(filename, 'r', encoding='utf-8') as file:
# 读取文件的所有行到列表中
lines = file.readlines()
# 初始化总温度和计数器
total_temperature = 0.0
count = 0
# 遍历每一行数据
for line in lines:
# 分割每行数据为一个列表,以空格分隔
parts = line.strip().split(' ')
# 如果分割后的列表长度大于等于3,说明至少包含日期、时间和温度信息
if len(parts) >= 3:
# 提取温度部分并转换为浮点数
temperature = float(parts[2])
# 累加温度值到总温度
total_temperature += temperature
# 计数加1
count += 1
# 如果有有效的温度数据
if count > 0:
# 计算平均温度
average_temperature = total_temperature / count
# 输出平均温度值,保留两位小数
print(f'平均的温度值是:{average_temperature:.2f}')
except FileNotFoundError:
# 捕获文件未找到错误
print("文件打开错误")
except Exception as e:
# 捕获其他异常并输出异常信息
print(f"发生异常:{str(e)}")
4、求温度平均值(2)
下面是一个传感器采集数据文件sensor-data.csv的一部分:
2018-02-28 01:03:16.33393 19.3024 38.4629 45.08 2.687422018-02-28 01:06:16.013453 19.1652 38.8039 45.08 2.687422018-02-28 01:06:46.778088 19.175 38.8379 45.08 2.69964......
其中,每行是一个读数,空格分隔多个含义,分别包括日期、时间、温度、湿度、光照和电压。其中,温度处于第3列。
请编写程序,用户输入文件名,统计并输出传感器采集数据中光照部分的最大值,最小值,平均值,所有值保留小数点后2位。读取文件不用指定编码方式。
输入为:
sensor-data.csv
输出为:(符号为中文)
最大值、最小值、平均值分别是:49.08, 40.08, 44.37
输入为:
x.csv
输出为:
文件打开错误
代码:
python
# -*- coding = utf-8 -*-
# @Author:为一道彩虹
if __name__ == '__main__':
# 获取输入文件名
filename = input()
try:
# 打开文件,使用 utf-8 编码方式读取
with open(filename, 'r', encoding='utf-8') as file:
# 读取文件的所有行到列表中
lines = file.readlines()
# 存储光照数据
light_values = []
# 遍历每一行数据
for line in lines:
# 分割每行数据为一个列表,以逗号分隔
parts = line.strip().split(',')
# 提取光照数据
light_values.append(float(parts[4]))
# 如果有有效的光照数据
if len(light_values) > 0:
max_light = max(light_values)
min_light = min(light_values)
avg_light = sum(light_values) / len(light_values)
print(f'最大值、最小值、平均值分别是:{max_light:.2f}, {min_light:.2f}, {avg_light:.2f}')
except FileNotFoundError:
# 捕获文件未找到错误
print("文件打开错误")
先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!