7-14 jmu-python-异常-学生成绩处理专业版

小明在帮助老师统计成绩,老师给他的是一组数据。数据的第1行代表学生数n,后面
的n行代表每个学生的成绩。成绩是整数类型。小明编写了一个程序,该程序可以批量
处理数据,统计所有学生的平均分。当数据没有任何错误时,提示'All OK',当数据有
一些错误(某行是浮点数、某行是非整数字符)时,可以提示哪些数据出错,并最后提示
第几行出错,出错的原因,共出错多少行。对于另一些小错误,如某行虽然是整数,但
是左右有多余的空格,可以将空格去除掉进行正常统计。

在最后输出:
共处理多少行数据,几行正确,几行错误,平均成绩(保留两位小数)。

进阶要求:
有可能碰到要求输入n行,后面的数据却小于n行。要求处理这种情况。碰到这种情况。
输出end of files,并统计现有行数。见样例3

输入格式:

第1行为n
接下来输入<=n行数据进行测试

输出格式:

见样例输出。输出错误原因的时候,需要将整行输出(如果该行有左右空格,需要将左右空格也输出)


# 从输入中读取一个整数n,表示有n行成绩需要统计
n = int(input())

# 初始化变量sum和count,用于记录所有成绩的总和和个数
sum = 0
count = 0

# 初始化变量error_count和error_lines,用于记录错误的个数和行号
error_count = 0
error_lines = []

# 循环读入成绩,并进行处理
for i in range(n):
    # 从输入中读取一行字符串s,代表一个成绩
    s = input().strip()

    # 如果s不是整数,则输出错误信息并将其添加到错误列表中
    if not s.isdigit():
        error_count += 1
        error_lines.append((i+1, s))
    else:
        # 将s转换为整数,并累加到sum中
        x = int(s)
        sum += x

        # 计数器加1
        count += 1

# 输出提示信息和平均值
print("共处理了{}行数据".format(n))
print("其中:")
print(" - {}行正确".format(count))

if error_count > 0:
    print(" - {}行错误".format(error_count))
    for line in error_lines:
        print("   * 第{}行:{}".format(line[0], line[1]))
else:
    print(" - 没有错误")

if count > 0:
    print("平均成绩为:{:.2f}".format(sum/count))
else:
    print("没有正确的成绩")

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值