Python学生成绩处理专业版


1. 题目🔍

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

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

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

1.1 输入样例1

3
1
    2    
3

1.2 输出样例1

Total: 3
OK: 3
Error: 0
avg grade = 2.00

1.3 输入样例2

5
1
  2
   a  
  b  5
3

1.4 输出样例2

line 3 error for input "   a  "
line 4 error for input "  b  5"
Total: 5
OK: 3
Error: 2
avg grade = 2.00

1.5 输入样例3

5
 a
 2    
3

1.6 输出样例3

line 1 error for input " a"
end of files
Total: 3
OK: 2
Error: 1
avg grade = 2.50

提示:对于样例3,如果是在IDLE中进行测试,可在输入最后一行并回车后,按Ctrl+D结束输入。


2. 题解✨

2.1 思路

  • 通过第一行的输入数字来作为循环,确定随后输入的行数
  • 通过strip()来去掉输入部分多余的空格
  • 通过isdecimal()来判断是否为整数
  • 字典将格式错误的行数与对应的内容存入,之后再格式化输出

注:暂未完成进阶要求中的内容

2.2 代码

total_num = int(input())
ok = 0
error = 0
total = 0
dic = {}

for i in range(total_num):
    temp = input()
    trim = temp.strip()
    if trim.isdecimal():
        ok += 1
        total += int(trim)
    else:
        dic[i + 1] = temp
        error += 1

for k, v in dic.items():
    print('line {} error for input "{}"'.format(k, v))
print('Total:', total_num)
print('OK:', ok)
print('Error:', error)
print('avg grade = {:.2f}'.format(total/ok))

相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值