PAT 乙级 1054 求平均值 Python3

该博客介绍了PAT乙级编程题1054的解决方案,主要涉及Python3语言。题目要求处理包含非法输入的实数列表,计算合法实数的平均值,对非法输入进行特殊标记。博主分享了使用Python内置类型转换进行非法输入判断的方法,以及处理英语单复数问题的思路。文章结尾表达了对题目设计的一些不满,如缺少测试数据和特定规则的合理性。
摘要由CSDN通过智能技术生成

 

本题的基本要求非常简单:给定 N 个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是 [−1000,1000] 区间内的实数,并且最多精确到小数点后 2 位。当你计算平均值的时候,不能把那些非法的数据算在内。

输入格式:

输入第一行给出正整数 N(≤100)。随后一行给出 N 个实数,数字间以一个空格分隔。

输出格式:

对每个非法输入,在一行中输出 ERROR: X is not a legal number,其中 X 是输入。最后在一行中输出结果:The average of K numbers is Y,其中 K 是合法输入的个数,Y 是它们的平均值,精确到小数点后 2 位。如果平均值无法计算,则用 Undefined 替换 Y。如果 K 为 1,则输出 The average of 1 number is Y

思路:恶心人的模拟题,本题恶心在如何判断非法和英语单复数上,以及非常规的所谓合理实数.

非法的判决方法,我实际上很偷懒,直接让python自己判断,如果能用float转化的那么肯定是实数,

如果要从字符串角度自己判断非法的话,那么一个实数的组成部分有:符号(+-),整数部分,小数点,小数部分,

换言之你需要先判断是否具有符号,然后是否有小数点,小数点之前是否满足是数字,之后是否只有两位小数.

英语单复数我是最无语的,算法题又不是四六级,想不出刁钻数据就只能这样糊弄学生,number和numbers.行了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值