国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python學(xué)生成績排序(循環(huán)實現(xiàn))

這篇具有很好參考價值的文章主要介紹了Python學(xué)生成績排序(循環(huán)實現(xiàn))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目要求(成績數(shù)據(jù)已給出)

輸入學(xué)生成績信息序列,完成對于每個學(xué)生成績數(shù)據(jù)的儲存,并將所有學(xué)生儲存于列表中;在此基礎(chǔ)上,按照總分從高到低的學(xué)生名單,總分從低到高的學(xué)生名單,三門課成績從高到低的學(xué)生名單?相同成績都按先錄入排列在前的規(guī)則處理。

成績原始數(shù)據(jù)如下:

SanZhang 70 80 61
SiLi 86 77 81
WuWang 88 90 77
MingLi 60 77 81
MiWang 71 70 60
HaiLi 88 78 89
HeWang 70 90 80
LiWang 67 71 70


  • 解題思路(啰嗦的很,可直接看代碼)
  1. 首先進行數(shù)據(jù)的輸入,要求用字典儲存學(xué)生信息,并將學(xué)生放入列表。因此,思路為:建立一個儲存數(shù)據(jù)的列表data_list,并將字典作為列表的元素,每一個字典對應(yīng)一個學(xué)生的信息,然后通過循環(huán)結(jié)構(gòu)將輸入的數(shù)據(jù)分別作為對應(yīng)鍵的值。
  2. 建立數(shù)據(jù)列表后,通過調(diào)用列表中的字典,取出學(xué)生成績進行運算比較。建立data_sum,list_tmp等成績列表儲存各個學(xué)生總成績和單科成績,對這些列表進行排序,然后利用列表進行學(xué)生的排序:循環(huán)遍歷成績列表中每一個數(shù)值,然后再在字典中遍歷查找相同值,提取該值對應(yīng)的字典的Name成員,放入新建的列表sort_list中;;循環(huán)結(jié)束即得到排序的名單(即sort_list)。
  3. 注意到成績可能出現(xiàn)重復(fù)情況,而相同成績都按先錄入排列在前的規(guī)則處理,因此想到兩種處理方式(分別在sort_sum和sort_sin中體現(xiàn)):

(1)利用pandas去除重復(fù)項,然后在字典中遍歷找到相符值,得到值對應(yīng)的鍵

(2)不去除重復(fù)元素,在遍歷尋找相符值時,找到一個即進入下一次循環(huán)(continue)。


代碼如下

import pandas as pd
from pandas import DataFrame  # 用于刪除求和時重復(fù)項
'''
對待重復(fù)成績,本程序提供兩種處理方式(在sort_sum和sort_sin中體現(xiàn)):
1.利用pandas去除重復(fù)項,然后在字典中遍歷找到相符值,得到值對應(yīng)的鍵
2.不去除重復(fù)元素,在遍歷尋找相符值時,找到一個即進入下一次循環(huán)(continue)
'''


# 定義初始化數(shù)據(jù)函數(shù)
def input_data():
    data_list = list()  # 用字典儲存每個學(xué)生數(shù)據(jù),并將字典放入列表data_list中
    for i in range(8):
        data_list.append(dict())                        # 在列表中創(chuàng)建空字典
        title = ["Name", "Math", "English", "Physics"]  # 創(chuàng)建鍵列表用于字典鍵值對建立
        str_tmp = input()                               # 輸入得到字符串str_tmp
        l_tmp = str_tmp.split(" ")                      # 將輸入由字符串轉(zhuǎn)為列表l_tmp
        data_list[i][title[0]] = l_tmp[0]               # 將名字作為鍵Name對應(yīng)值
        j = 1
        while j < 4:                                    # 將成績分別對應(yīng)鍵放入
            data_list[i][title[j]] = int(l_tmp[j])
            j += 1
    return data_list    # 返回儲存信息的(字典)列表


# 定義總成績排序函數(shù)
def sort_sum(data_list):
    sort_list = list()   # 初始化排序輸出列表
    data_sum = list()
    for i in range(8):
        ind_sum = 0      # 初始化每個人成績總和
        title = ["Math", "English", "Physics"]
        for j in range(3):
            ind_sum += data_list[i][title[j]]
        data_sum.append(ind_sum)   # 得到總成績列表
    data_sum = pd.DataFrame(data_sum)
    data_sum.drop_duplicates(subset=None, keep='first', inplace=True)    # 去除重復(fù)的總成績,以免在字典中重復(fù)檢索
    data_sum = list(data_sum[0])
    data_sum.sort()                # 將總成績升序排列
    for i in range(len(data_sum)):
        for j in range(8):
            if data_sum[i] == data_list[j]["Math"] + data_list[j]["English"] + data_list[j]["Physics"]:
                sort_list.append(data_list[j]["Name"])
    print("總成績排名(升序)為:", sort_list)
    sort_list.reverse()
    print("總成績排名(降序)為:", sort_list)


# 定義單項成績排列函數(shù)
def sort_sin(data_list):
    sort_math = list()
    sort_eng = list()
    sort_phy = list()
    list_tmp = list()   # 用于暫時存放各個學(xué)生各科成績
    for i in range(8):  # 排列高數(shù)成績
        list_tmp.append(data_list[i]["Math"])
    list_tmp.sort(reverse=True)
    for i in range(8):
        for j in range(8):
            if data_list[j]["Math"] == list_tmp[i] and data_list[j]["Name"] not in sort_math:
                sort_math.append(data_list[j]["Name"])
                continue
    list_tmp.clear()
    for i in range(8):  # 排列英語成績
        list_tmp.append(data_list[i]["English"])
    list_tmp.sort(reverse=True)
    for i in range(8):
        for j in range(8):
            if data_list[j]["English"] == list_tmp[i] and data_list[j]["Name"] not in sort_eng:
                sort_eng.append(data_list[j]["Name"])
                continue
    list_tmp.clear()
    for i in range(8):  # 排列大物成績
        list_tmp.append(data_list[i]["Physics"])
    list_tmp.sort(reverse=True)
    for i in range(8):
        for j in range(8):
            if data_list[j]["Physics"] == list_tmp[i] and data_list[j]["Name"]not in sort_phy:
                sort_phy.append(data_list[j]["Name"])
                continue
    print("高數(shù)成績排名(降序)為: ", sort_math)
    print("英語成績排名(降序)為: ", sort_eng)
    print("大物成績排名(降序)為: ", sort_phy)


# 主函數(shù)調(diào)用
l = input_data()
print("----------第**次考試學(xué)生成績情況明細----------")
print("學(xué)生名單:")
for i in range(8):
    print("(", i+1, ")", l[i]["Name"], sep='', end=' ')
print("\n詳細成績?nèi)缦拢?)
for i in range(8):
    print(l[i])
print("成績排名如下:")
sort_sum(l)
sort_sin(l)

注意注意注意!??!

運行時,如果輸入數(shù)據(jù)格式不嚴格按照“數(shù)據(jù)(空格)數(shù)據(jù)(空格)…\n”,則程序無法正常運行。

原因:如果輸入格式不對,則會導(dǎo)致“ ”或“”被列入字典的值,導(dǎo)致無法比較或out of index等問題。

所以,一定嚴格按照格式輸入調(diào)試(就用題目所給數(shù)據(jù),直接復(fù)制粘貼)

運行結(jié)果:

Python學(xué)生成績排序(循環(huán)實現(xiàn))文章來源地址http://www.zghlxwxcb.cn/news/detail-472872.html

到了這里,關(guān)于Python學(xué)生成績排序(循環(huán)實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 用C語言進行學(xué)生成績排序(交換排序算法)

    用C語言進行學(xué)生成績排序(交換排序算法)

    所謂交換,是指根據(jù)序列中兩個元素的比較結(jié)果來對換這兩個記錄在序列中的位置?;诮粨Q的排序算法很多,本文主要介紹冒泡排序和快速排序。 上一篇的博客學(xué)習(xí)了插入排序,今天這里是交換排序,它和插入排序都屬于內(nèi)部排序 冒泡排序的基本思想是:從后往前

    2024年02月15日
    瀏覽(18)
  • 用C語言進行學(xué)生成績排序(插入排序算法)

    用C語言進行學(xué)生成績排序(插入排序算法)

    從今天開始我們就要開始學(xué)習(xí)排序算法啦! 排序,就是重新排列表中的元素,使表中的元素滿足按有序的過程。為了查找方便,通常希望計算機中的表是按有序的。 除了我們之前了解的時間復(fù)雜度和空間復(fù)雜度來判斷一個算法的好壞之外,在排序算法這里我們引

    2024年02月15日
    瀏覽(18)
  • 【Java】定義一個表示學(xué)生信息的類,要求如下:(1)學(xué)生的屬性包括:學(xué)號、姓名、性別、年齡和課程成績(5門課,其中包括Java);

    【Java】定義一個表示學(xué)生信息的類,要求如下:(1)學(xué)生的屬性包括:學(xué)號、姓名、性別、年齡和課程成績(5門課,其中包括Java);

    題目要求:定義一個表示學(xué)生信息的類,要求如下:(1)學(xué)生的屬性包括:學(xué)號、姓名、性別、年齡和課程成績(5門課,其中包括Java);(2)創(chuàng)建帶參數(shù)的構(gòu)造方法;(3)獲取學(xué)生的屬性信息;(4)根據(jù)學(xué)生類,創(chuàng)建五個該類的對象,要求對象數(shù)組,并打印五個學(xué)生的

    2024年02月07日
    瀏覽(29)
  • 用C語言對學(xué)生成績進行排序(歸并排序與基數(shù)排序)

    用C語言對學(xué)生成績進行排序(歸并排序與基數(shù)排序)

    我們內(nèi)部排序已經(jīng)學(xué)了插入排序(直接插入排序、折半插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(簡單選擇排序、堆排序),這些都屬于內(nèi)部排序,接下來我們學(xué)習(xí)內(nèi)部排序里面剩下的歸并排序和基數(shù)排序。 歸并排序與上述基于交換、選擇等排序

    2024年02月16日
    瀏覽(21)
  • 基于Python+Django實現(xiàn)的學(xué)生成績管理系統(tǒng)

    基于Python+Django實現(xiàn)的學(xué)生成績管理系統(tǒng)

    作者主頁:編程指南針 作者簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家 、掘金特邀作者、多年架構(gòu)師設(shè)計經(jīng)驗、騰訊課堂常駐講師 主要內(nèi)容:Java項目、簡歷模板、學(xué)習(xí)資料、面試題庫、技術(shù)互助 收藏點贊不迷路? 關(guān)注作者有好處 文末獲取源碼 ? 語言環(huán)境:Python3.7 數(shù)據(jù)庫:

    2024年02月11日
    瀏覽(21)
  • 查找和排序算法的學(xué)生成績分析實驗

    查找和排序算法的學(xué)生成績分析實驗

    編寫程序?qū)⒆约簩W(xué)號后面的8位同學(xué)的學(xué)號、姓名以及數(shù)學(xué)、英語和數(shù)據(jù)結(jié)構(gòu)的成績信息保存到學(xué)生成績表中。 學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)結(jié)構(gòu) 189000202 張三 80 75 86 189000203 李四 55 63 72 189000204 王一 88 75 85 189000205 王二 79 96 83 189000206 王三 87 45 77 189000207 王四 66 56 50 189000208 王五

    2024年02月11日
    瀏覽(17)
  • 用C語言進行學(xué)生成績排序(簡單選擇排序和堆排序)

    用C語言進行學(xué)生成績排序(簡單選擇排序和堆排序)

    選擇排序的基本思想是:每一趟(如第i趟)在后面n-i+1 (i=1,2…,n-1) 個待排序元素中選取最小的元素,作為有序子序列的第i個元素,直到第n-1趟做完,待排序元素只剩下1個,就不用再選了。選擇排序中的堆排序算法是歷年考查的重點。 根據(jù)上面選擇排序的思想,可以很直觀

    2024年02月15日
    瀏覽(18)
  • 學(xué)生成績管理系統(tǒng)(合并文件,查找,總分排序,保存補考學(xué)生信息)

    目錄 題目及要求: 錄入學(xué)生成績信息到鏈表中 合并文件 直接插入排序(總分降序) 冒泡排序(總分降序) 順序查找(名字查找) 二分查找(名字查找) ?這里是先按字母首字母排序再查找 保存不及格學(xué)生到文件中 現(xiàn)有學(xué)生成績信息文件 1(1.txt),內(nèi)容如下(同學(xué)自己補

    2024年02月10日
    瀏覽(35)
  • 用C語言進行學(xué)生成績排序(簡單選擇排序和對堆排序)

    用C語言進行學(xué)生成績排序(簡單選擇排序和對堆排序)

    選擇排序的基本思想是:每一趟(如第i趟)在后面n-i+1 (i=1,2…,n-1) 個待排序元素中選取最小的元素,作為有序子序列的第i個元素,直到第n-1趟做完,待排序元素只剩下1個,就不用再選了。選擇排序中的堆排序算法是歷年考查的重點。 根據(jù)上面選擇排序的思想,可以很直觀

    2024年02月13日
    瀏覽(21)
  • 成績排序(思路+代碼詳解)Python實現(xiàn)

    目錄 題目描述 輸入 輸出 樣例輸入 樣例輸出 題目分析:注意兩點 思路分析: 代碼詳解: 給出n個學(xué)生的姓名和成績,將學(xué)生成績從高到低排序,成績相同的學(xué)生,按照姓名拼音從小到大排序 輸入包括多行,第一行是一個整數(shù)n(0n10),接下來有n行,每一行有學(xué)生姓名和兩門課

    2024年02月12日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包