7-9 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'結束輸入。

n=int(input())
sum=0
flag=0
temp=n
count=0
count1=0
l=[]
while True:
    try:
        l.append(input())
    except:
        break
for i in range(len(l)):
    count+=1
    a=0
    a=l[i]
    try:
        a=int(a)
        sum=sum+a
        count1+=1
    except:
        print('line {} error for input "{}"'.format(count,a))
        flag+=1
#if flag==0:
    #print("All OK")
if count<n:
    print("end of files")
print("Total: {}".format(len(l)))
print("OK: {}".format(count1))
print("Error: {}".format(flag))
print("avg grade = {:.2f}".format(sum/count1))

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM