[Niveau informatique 2 Python] Questions complètes

Ordinateur niveau deux vraies questions python



insérez la description de l'image ici


1. Questions d'application simples "Moon River"

Description : Il y a un fichier PY202.py sous le dossier du candidat, veuillez écrire du code pour remplacer les points de suspension afin de compléter les fonctions suivantes. Laissez l'utilisateur entrer le texte d'un poème, qui contient des virgules et des points chinois. (1) Utilisez le modèle précis de la bibliothèque jieba pour segmenter le texte d'entrée. Sortez les mots après la segmentation des mots et séparez-les par "/"; comptez le nombre de mots chinois et de sortie;
(2) Séparez le texte d'entrée en phrases simples avec des virgules et des points et sortez-les, chaque phrase est d'une ligne, chaque ligne est de 20 caractères de large et centrée.
Entre la sortie de (1) et (2), ajoutez une ligne vierge.
Les exemples sont les suivants (où les données sont fournies à titre indicatif uniquement) :

Entrée :
Moon River Broad river, un jour je passe à tes côtés,

Sortie :
moon/river/kuankuan/river/day/me/from/you/beside/over/
Nombre de mots chinois : 10

Moon River, large fleuve,
je passerai un jour à tes côtés

code:

import jieba
text = input("请输入一段中文文本,句子之间以逗号或句号分隔:")
slist = jieba.lcut(text)
number_words = 0


for i in slist:
   if i in ",。":
      continue
   number_words += 1
   print(i,end="/")
   
print("\n中文词语数是:{}\n".format(number_words))

poetry = ''
for i in text:
    if i in ',。':
        print('{: ^20}'.format(poetry))
        poetry = ''
        continue
    poetry += i

2. Questions d'application complètes "Statistiques sur les résultats des étudiants"

Description : data.txt est un fichier de données composé d'informations sur les élèves, chaque ligne contient les informations pertinentes d'un élève, y compris le nom, la classe et le score.
Le nom et les autres informations sont séparés par deux points, et la classe et le score sont séparés par une virgule. La classe est composée de "nom du département + numéro de classe", comme "calcul 191".

本题作答第一问

Lire data.txt, sortir le nom et le score de l'élève dans le fichier studs.txt, un enregistrement par ligne, le nom et le score sont séparés par des deux-points, l'exemple est le suivant :
exemple
d'entrée et de sortie

Entrée
Wang 1 : Calcul 191 340
Zhang 2 : Économie 191 450
... (omis)

Sortie
Wang 1 : 340
Li Si : 450
... (omis)

code:

f_data = open('data.txt', 'r', encoding="utf-8")
f_studs = open('studs.txt', 'w', encoding="utf-8")
student_lst = f_data.readlines()
for student in student_lst:
    student = student.strip().split(':')
    name = student[0]
    score = student[1].split(',')[-1]
    f_studs.write(name + ':' + score + '\n')
f_data.close()
f_studs.close()

Cette question répond à la deuxième question

Sélectionnez l'étudiant avec le score le plus élevé et imprimez le nom et le score de l'étudiant, séparés par deux points. L'exemple est le suivant :

Li Si : 450

Exemple d'entrée et de sortie

Input
Wang 1 : calcul 191 340
feuilles 2 : économie 191 450
... (omis)

Sortie
Li Si : 450

f_data = open('data.txt', 'r', encoding="utf-8")
students_list = f_data.readlines()

lt = []

for student in students_list:
    student = student.strip().split(':')
    name = student[0]
    score = student[1].split(',')[-1]
    lt.append([name,score])
lt.sort(key=lambda x:eval(x[1]),reverse = True)
print(lt[0][0]+':'+lt[0][1])
f_data.close()

Cette question répond à la troisième question

Calculez le score moyen de chaque classe, imprimez la classe et le score moyen, gardez 2 chiffres après la virgule du score moyen, et séparez le milieu par deux points, l'exemple est le suivant : exemple d'entrée et de
sortie

Entrée
Roi 1 : Calcul 191 340
Zhang 2 : Économie 191 450
... (omis)

Sortie
Calculer 191:447.55
Économie 191:460.08
... (omis)

f_data = open('data.txt', 'r', encoding="utf-8")
students = f_data.readlines()
d = {
    
    }

for student in students:
    student = student.strip().split(':')
    Class, Score = student[1].split(',')
    d[Class] = d.get(Class, []) + [eval(Score)]

for key in d:
    avg_score = sum(d[key]) / len(d[key])
    print('{}:{:.2f}'.format(key, avg_score))\
    
f_data.close()

おすすめ

転載: blog.csdn.net/guanguan12319/article/details/129473539