写一段python代码,根据输入n完成下列功能:(文件编码格式为utf-8) 本题内如需排序,为保证排序结果测试正确,必须采用直接排序取前k位。 需要取最高前20位时,必须从大到小排序,取前20位数据。不允许从小到大排序,再逆序取数据。 需要取最低前20位时,必须从小到大排序,取前20位数据。不允许从大到小排序,再逆序取数据。 若n为'最低总价',则可以继续输入一个整数k,输出'价格'列最低的前k位,行内数据以空格为间隔。格式见输入输出示例 若n为'最大面积',则可以继续输入一个整数k,输出'面积'列最大的前k位,行内数据以空格为间隔。格式见输入输出示例 若n为'最低单价',输出每平米价格最低的1条房源信息(按公式计算:每平米价格=价格/面积),行内数据以空格为间隔。格式见输入输出示例 若n为'毛坯电梯房单价',输出数据中所有满足'有电梯'并且装修情况为'毛坯'的房屋的每平米平均价格(按公式计算:每平米平均价格=总价格/总面积),格式见输入输出示例 若n为'年份',则可以继续输入字符串s,如果有年份为s的数据,输出年份为s的房屋套数;如果没有匹配数据,输出'无数据',格式见输入输出示例 如果非以上输入,则在小区名中查找是否包含n,并输出所有包含n字段的小区房源信息(按文件数据原有顺序),行内数据以空格为间隔。如果没有数据,则输出'未找到相关数据'

时间: 2024-02-27 20:56:43 浏览: 33
以下是一个可能的实现: ```python def process_input(n): data = [] # 存储房源信息的列表 with open('data.txt', encoding='utf-8') as f: for line in f: fields = line.strip().split() info = { '小区名': fields[0], '价格': float(fields[1]), '面积': float(fields[2]), '有电梯': fields[3] == '是', '装修情况': fields[4], '年份': fields[5] } data.append(info) if n == '最低总价': k = int(input()) sorted_data = sorted(data, key=lambda x: x['价格']) for i in range(k): print('{} {:.2f}'.format(sorted_data[i]['小区名'], sorted_data[i]['价格'])) elif n == '最大面积': k = int(input()) sorted_data = sorted(data, key=lambda x: x['面积'], reverse=True) for i in range(k): print('{} {:.2f}'.format(sorted_data[i]['小区名'], sorted_data[i]['面积'])) elif n == '最低单价': min_price = float('inf') min_price_info = None for info in data: price_per_sqm = info['价格'] / info['面积'] if price_per_sqm < min_price: min_price = price_per_sqm min_price_info = info print('{} {:.2f} {:.2f}'.format(min_price_info['小区名'], min_price_info['价格'], min_price_info['面积'])) elif n == '毛坯电梯房单价': sum_price = 0 sum_sqm = 0 count = 0 for info in data: if info['有电梯'] and info['装修情况'] == '毛坯': sum_price += info['价格'] sum_sqm += info['面积'] count += 1 if count == 0: print('无数据') else: avg_price_per_sqm = sum_price / sum_sqm print('{:.2f}'.format(avg_price_per_sqm)) elif n == '年份': s = input() count = 0 for info in data: if info['年份'] == s: count += 1 if count == 0: print('无数据') else: print(count) else: found = False for info in data: if n in info['小区名']: print('{} {:.2f} {:.2f} {} {} {}'.format( info['小区名'], info['价格'], info['面积'], '是' if info['有电梯'] else '否', info['装修情况'], info['年份'] )) found = True if not found: print('未找到相关数据') ``` 这个函数使用了一个列表来存储所有房源信息,每个房源信息是一个字典。然后根据输入的n进行相应的处理: - 如果n为'最低总价',则继续输入k,对房源信息列表按照价格从小到大排序,取前k个房源信息,输出这些房源信息的小区名和价格。 - 如果n为'最大面积',则继续输入k,对房源信息列表按照面积从大到小排序,取前k个房源信息,输出这些房源信息的小区名和面积。 - 如果n为'最低单价',遍历房源信息列表,计算每个房源的每平米价格,然后找到每平米价格最低的房源信息,输出该房源信息的小区名、价格、面积和每平米价格。 - 如果n为'毛坯电梯房单价',遍历房源信息列表,筛选出有电梯且装修情况为毛坯的房源信息,计算这些房源信息的每平米平均价格,输出该平均价格。 - 如果n为'年份',则继续输入字符串s,遍历房源信息列表,找到年份为s的房源信息,输出该年份的房源套数。 - 如果n为其他字符串,则遍历房源信息列表,找到小区名包含n的所有房源信息,输出这些房源信息的小区名、价格、面积、是否有电梯、装修情况和年份。 输出格式按照题目要求进行处理。注意,输出的浮点数需要控制小数点后的位数。

相关推荐

最新推荐

recommend-type

python3的url编码和解码,自定义gbk、utf-8的例子

今天小编就为大家分享一篇python3的url编码和解码,自定义gbk、utf-8的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

python 读写文件包含多种编码格式的解决方式

今天小编就为大家分享一篇python 读写文件包含多种编码格式的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Python爬取数据保存为Json格式的代码示例

今天小编就为大家分享一篇关于Python爬取数据保存为Json格式的代码示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

Python设置默认编码为utf8的方法

主要介绍了Python设置默认编码为utf8的方法,结合实例形式分析了Python针对文件编码的设置方法与相关注意事项,需要的朋友可以参考下
recommend-type

vscode写python时的代码错误提醒和自动格式化的方法

主要介绍了vscode写python时的代码错误提醒和自动格式化的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。