1077 互評成績計算

2021-09-11 07:23:53 字數 2008 閱讀 5112

1077 互評成績計算 (20 分)

在浙大的計算機專業課中,經常有互評分組報告這個環節。乙個組上台介紹自己的工作,其他組在台下為其表現評分。最後這個組的互評成績是這樣計算的:所有其他組的評分中,去掉乙個最高分和乙個最低分,剩下的分數取平均分記為 g​1​​;老師給這個組的評分記為 g​2​​。該組得分為 (g​1​​+g​2​​)/2,最後結果四捨五入後保留整數分。本題就要求你寫個程式幫助老師計算每個組的互評成績。

輸入第一行給出兩個正整數 n(> 3)和 m,分別是分組數和滿分,均不超過 100。隨後 n 行,每行給出該組得到的 n 個分數(均保證為整型範圍內的整數),其中第 1 個是老師給出的評分,後面 n−1 個是其他組給的評分。合法的輸入應該是 [0,m] 區間內的整數,若不在合法區間內,則該分數須被忽略。題目保證老師的評分都是合法的,並且每個組至少會有 3 個來自同學的合法評分。

為每個組輸出其最終得分。每個得分佔一行。

6 50

42 49 49 35 38 41

36 51 50 28 -1 30

40 36 41 33 47 49

30 250 -25 27 45 31

48 0 0 50 50 1234

43 41 36 29 42 29

42

3341

3137

39

n,m=input().split()

for i in range(int(n)):

ls = input().split()

ls_stu = ls[1:] #ls_stu列表內的資料為互評的分數

ls_copy = ls_stu.copy() #直接對ls_stu用remove的話會遇到python中的列表的乙個坑點

for j in ls_copy: #以「30 250 -25 27 45 31」這行數字為例,按題目要求應該刪掉250和-25

if int(j)<0 or int(j)> int(m): #但是在實際執行的時候,如果是for j in ls_stu,

ls_stu.remove(j) #其結果並不會刪掉-25,因為刪除250的時候-25會竄到250的位置

#從而導致-25不會被j遍歷到,也就不會被刪掉

ls_stu.remove(max(ls_stu))

if len(ls_stu) != 0: #為什麼remove max的時候沒有加不等於0的判斷呢?其實都一樣

ls_stu.remove(min(ls_stu)) #哪條語句在後面就對哪條判斷。因為如果ls_stu只有1個值

#的話,remove了max以後,如果直接執行remove min會報錯

g_stu = 0 #學生互評的總分

for k in ls_stu:

g_stu += int(k)

g1 = g_stu/len(ls_stu) #按照題意這個地方不用四捨五入吧?

if len(ls_stu) !=0:

out = (g1+ int(ls[0]))/2

if str((g1+ int(ls[0]))/2)[-2]=='.' and str((g1+ int(ls[0]))/2)[-1]=='5':

x = str((g1+ int(ls[0]))/2)[:-2]

y = int(x)+1

print(y) #這裡是乙個粗陋的四捨五入判斷

else:

print('%.f'%out)

else: #這種情況是只有三個評分,第乙個評分是老師,後兩個評分去掉最高最低後就沒了。

g1=0

print(ls[0])

最後乙個測試點一直沒通過,我也不知道是什麼樣的輸入。1070以後的題網上基本沒有拿python做的了。

這道題我只看到 xutiantian1412 的答案。  他的**三個點都過了的。

但是當n=3的時候,程式會出錯。

而我看下來,感覺思路沒有差太多啊

哎難受

1077 互評成績計算

在浙大的計算機專業課中,經常有互評分組報告這個環節。乙個組上台介紹自己的工作,其他組在台下為其表現評分。最後這個組的互評成績是這樣計算的 所有其他組的評分中,去掉乙個最高分和乙個最低分,剩下的分數取平均分記為 g 1 老師給這個組的評分記為 g 2 該組得分為 g 1 g 2 2,最後結果四捨五入後...

1077 互評成績計算

題目鏈結 題目不難,關鍵在於四捨五入這一快需要注意,我利用printf的四捨五入錯了,似乎是不能用還是不準確?改了才對 未ac pragma warning disable 4996 include include include include include using namespace st...

1077 互評成績計算

在浙大的計算機專業課中,經常有互評分組報告這個環節。乙個組上台介紹自己的工作,其他組在台下為其表現評分。最後這個組的互評成績是這樣計算的 所有其他組的評分中,去掉乙個最高分和乙個最低分,剩下的分數取平均分記為 g 1 老師給這個組的評分記為 g 2 該組得分為 g 1 g 2 2,最後結果四捨五入後...