本题的基本要求非常简单:给定N个实数,计算它们的平均值但复杂的是有些输入數据可能是非法的。一个“合法”的输入是[-10001000]区间内的实数,并且最多精确到小数点后2位当你计算平均值的时候,不能把那些非法的数據算在内
输入第一行给出正整数N(<=100)。随后一行给出N个实数数字间以一个空格分隔。
像这种要求简单的题目往往比较坑,陷阱比较哆现在我们详细解析一下。
正整数N我们可以不要我们需要得到第二行的那一串东西,切分成列表;然后就是遍历列表合法的去算平均数,不合法的输出指定信息;最后再根据不同的k(合法的数目)输出不同的结果其他部分自己看一下就好了,关键都在于判断合法数的过程!
该部分有不同的实现思路可以当作字符串挨个字符判断,比如第一位或者是负号‘-’或者是数字;鄙人通过正则表达式江所有合法的情况匹配出来,match对象不为None即匹配成功
从鄙人的正则式子可以看到题目存在的几个陷阱,详细的可看代码
1)诸如“.12”这样的没有整数位的(貌似测试点不包含)"12."这样的只有个小数点的,都可以接受所以匹配的数字都是{0,3}{0,2}
2)诸如 "002" 这样的数也是合法的因此鄙人没囿设定整数部分最高位不为0的规则; 大坑
3)边界条件 (-)1000要注意带小数部分的情况(最后一个测试点),即1000.00之类的;