Questions Python de niveau deux : les scores des cours sont triés et affichés par numéro d'étudiant

1. Sujets

Ce qui suit est l'une des questions complètes de l'examen Python de niveau 2. Il examine de manière approfondie les structures de données telles que les dictionnaires et les tuples, et le contrôle des processus tels que les boucles for et les jugements if. Enfin, la sortie formatée des caractères est également examinée.

Il existe une liste de goujons comme suit:

studs= [{'sid':'103','Chinese': 90},
{'sid':'101','Chinese': 80},
{'sid':'102','Chinese': 70}]

Extrayez le contenu des données des goujons de la liste, affichez et sortez les scores du cours correspondant à chaque numéro d'étudiant sur l'écran dans l'ordre croissant du numéro d'étudiant, voir l'exemple de sortie pour le format. ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

Exemple 1 :

输入: "无"
输出: "
101:80
102:70
103:90
"

Deuxièmement, la solution

1. Solution officielle

Les goujons sont composés de plusieurs dictionnaires, et les valeurs clés des dictionnaires peuvent être obtenues en utilisant la propriété items() des dictionnaires. Utilisez ensuite la méthode de boucle for pour parcourir, utilisez la méthode de découpage de tableau pour prendre des valeurs et créez une nouvelle liste de scores en fonction du jugement if, puis triez la liste et enfin utilisez la boucle for pour imprimer. Le code est illustré ci-dessous. Le problème avec le code officiel est qu'il y a trop de boucles for.Comme la méthode de tri consiste à trier selon les noms de clé du dictionnaire, vous pouvez utiliser sorted pour trier directement le dictionnaire.

studs= [{'sid':'103','Chinese': 90},
{'sid':'101','Chinese': 80},
{'sid':'102','Chinese': 70}]
scores = {}  
for stud in studs:
    sv = stud.items()  #sv被赋值为二维列表,形如[('sid','103'),('Chinese',90)]
    for it in sv:      
        if it[0] == 'sid':   #第一次访问:it = ('sid','103')
            k = it[1]        # k = '103'
        else:                #第二次访问:it = ('Chinese',90) it[1] = 90
            scores[k]  = it[1]   #scores["103"] = 90
so = list(scores.items())   #形如:[('103':90),('101':80),...]
so.sort(key = lambda x:x[0],reverse = False) #按学号进行排序
for l in so:
    print('{}:{}'.format(l[0],l[1]))   #遍历输出排序后结果

2. Solution personnelle

La solution personnelle est plus simplifiée, définissez un dictionnaire, puis utilisez la méthode de parcours pour obtenir les paires clé-valeur de chaque dictionnaire une par une, puis ajoutez le nom de la clé et la valeur de la clé au dic respectivement. Enfin, vous pouvez utiliser le tri par défaut de trié à traverser, afin d'éviter d'utiliser les fonctions lambda.

studs= [{'sid':'103','Chinese': 90},
{'sid':'101','Chinese': 80},
{'sid':'102','Chinese': 70}]
dic = {}
for i in studs:
    dic[i['sid']]="{}".format(i['Chinese'])
for item in sorted(dic.items()):
    print("{}:{}".format(item[0],item[1]))

Par rapport à la méthode officielle, cette solution n'utilise que cinq lignes de code pour résoudre le problème, elle est donc plus efficace. Utilisez le nom de la clé du dictionnaire pour lire la valeur de la clé, ce qui réduit considérablement la boucle et si le jugement. L'une des conditions préalables pour ce faire est de traiter chaque élément de goujons comme un dictionnaire, puis de lire le contenu du dictionnaire dans l'élément, d'ajouter les paires clé-valeur qui répondent aux exigences du nouveau dictionnaire dic, et enfin d'utiliser le dictionnaire trié traversant pour sortir.

3. Réflexion post-scolaire

  1. Essayez plusieurs solutions et complétez la solution au même problème pour tester l'effet d'apprentissage.
  2. Cette question examine la capacité globale, il est donc nécessaire de jeter une base solide, en particulier l'utilisation des fonctions de base.

Je suppose que tu aimes

Origine blog.csdn.net/henanlion/article/details/131199867
conseillé
Classement