PAT 乙级 1054 求平均值 python

题目
在这里插入图片描述
在这里插入图片描述

思路:
利用异常捕获非法字符,
再判断小数位数是否合法
最后判定是否在规定区间
将合法数字相加求平均

需要注意的是
当合法数字数目为0的输出
当合法数字数目为1时 numbers改为number
区间判定需要为-1000<=num<=1000

代码:

num=int(input())
num_list=list(input().split())

sum_=0
leage_count=0
for str_ in num_list:
    try:#判断字符是否可以转为合法数字
        temp=float(str_)

        point_num = 0
        if '.' in str_:
            point = str_.index('.')
            point_num = len(str_) - point - 1
        if point_num>2: #判断小数位数是否合法
            print(f'ERROR: {str_} is not a legal number')
            continue

        if -1000<=temp<=1000:#判断大小是否在合法区间

            leage_count=leage_count+1
            sum_=sum_+round(temp,2)
        else:
            print(f'ERROR: {str_} is not a legal number')
    except:
        print(f'ERROR: {str_} is not a legal number')

if leage_count==0:
    print('The average of 0 numbers is Undefined')
elif leage_count==1:
    print("The average of {} number is {:.2f}".format(leage_count,sum_/leage_count))
else:
    print("The average of {} numbers is {:.2f}".format(leage_count, sum_ /leage_count))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值