1. <source id="nejs2"></source>
  2. <video id="nejs2"></video>
    <source id="nejs2"></source>
          1. 首頁 > 筆記大全 > Python編程實現成績名次計算

            Python編程實現成績名次計算

            更新:

            本文將詳細介紹如何使用Python編程語言進行成績名次的計算,方便學校、班級、教師等管理者對學生的成績情況進行了解和管理。

            一、基本算法實現

            我們可以通過定義一個列表來記錄每個學生的成績,并進行排序,最后再根據成績的高低計算出對應的名次。以下是基本的代碼實現。

            scores = [90, 85, 92, 76, 88, 94, 68, 72, 87, 80]
            rank = [0] * len(scores)
            for i in range(len(scores)):
                for j in range(len(scores)):
                    if scores[i] < scores[j]:
                        rank[i] += 1
            print("成績:", scores)
            print("名次:", rank)
            

            以上代碼中,首先定義了一個列表scores來存儲每個學生的成績,然后定義一個與scores長度相同的列表rank來記錄每個學生的名次。接著通過兩重循環來遍歷每個學生的成績,當成績比其他學生低時,就將對應的名次+1。最后輸出每個學生的成績和名次。

            二、考慮并列情況

            在實際情況中可能會出現成績相同的情況,這時我們需要對名次的計算進行調整。如果有多個學生成績相同,則他們的名次應該都是相同的,并且接下來的名次要順延。以下是代碼實現的修改版:

            scores = [90, 85, 92, 76, 88, 94, 68, 72, 87, 80]
            rank = [0] * len(scores)
            for i in range(len(scores)):
                for j in range(len(scores)):
                    if scores[i] < scores[j]:
                        rank[i] += 1
                    elif scores[i] == scores[j] and i > j:
                        rank[i] += 1
            print("成績:", scores)
            print("名次:", rank)
            

            這里我們加了一個判斷條件,如果成績相同且當前學生在后面,則相同成績的學生名次應該相同,排名后面的學生名次要+1。

            三、考慮成績組數不為n的情況

            在實際情況中可能會出現成績人數不足或者超過n人的情況,我們需要對代碼做出相應的調整,使其適應不同的人數情況。以下是代碼的完美版:

            import numpy as np
            
            def ranking(scores):
                rank = np.zeros_like(scores)
                sort_index = np.argsort(scores)[::-1]
                rank[sort_index] = np.arange(len(scores)) + 1
                same_index = np.where(np.diff(np.sort(scores))[::-1] == 0)[0]
                for i in same_index:
                    s = slice(np.where(scores == scores[sort_index[i]])[0][0],
                              np.where(scores == scores[sort_index[i + 1]])[0][0] + 1)
                    rank[s] = np.average(rank[s])
                return rank.astype(int)
            
            scores = [90, 85, 92, 76, 88, 94, 68, 72, 87, 80]
            rank = ranking(scores)
            print("成績:", scores)
            print("名次:", rank)
            

            這里我們使用了Numpy庫,首先用sort_index按成績從高到低排名,然后rank數組記錄相應名次,same_index中存儲相同成績的學生的索引。接著通過切片的方式取出相同成績的區域,利用numpy中的average函數計算該區域的平均名次,更新對應學生的名次。最后輸出每個學生的成績和最終計算出的名次。

            四、總結

            通過以上幾個步驟的改進,我們基本實現了成績名次的計算。當然,具體實現還可以根據實際需求進行一定的修改,比如需要加入更多的條件判斷,計算出更加精確的名次。編程的核心思想是,將問題拆分成多個小問題,利用代碼循序漸進地解決每個問題,最終實現整個任務。

            頂部 久久久久99精品成人片毛片_黃色A片三級三級三級无码_日本不卡高清视频v中文字幕_高清欧美视频一区二区
            1. <source id="nejs2"></source>
            2. <video id="nejs2"></video>
              <source id="nejs2"></source>