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

2023-12-13 19:00:15

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

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

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

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

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

输入样例1:
3
1
2
3
输出样例1:
Total: 3
OK: 3
Error: 0
avg grade = 2.00
输入样例2:
5
1
2
a
b 5
3
输出样例2:
line 3 error for input " a "
line 4 error for input " b 5"
Total: 5
OK: 3
Error: 2
avg grade = 2.00
输入样例3:
5
a
2
3
输出样例3:
line 1 error for input " a"
end of files
Total: 3
OK: 2
Error: 1
avg grade = 2.50
提示:对于样例3,如果是在IDLE中进行测试,可在输入最后一行并回车后,按’Ctrl+D’结束输入。

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

n = eval(input())
line_num = 1
s = 0
err = 0
ok = 0
total = 0
while line_num <= n:
    try:
        v = input()
        f_V = float(v)
        s += f_V
        total += 1
        ok += 1
        line_num += 1
    except EOFError:
        print("end of files")
        break
    except:
        print(f"line {line_num} error for input \"{v}\"")
        err += 1
        total += 1
        line_num += 1
    

print(f"Total: {total}")
print(f"OK: {ok}")
print(f"Error: {err}")
print(f"avg grade = {(s/ok):.2f}")

文章来源:https://blog.csdn.net/qq_53810226/article/details/134944645
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。