Introduction à Python pour Débutants
Introduction à Python pour Débutants
• Pycharm
• Atome
• Thony
• Vscode
•…
Mỗi phần mềm đều có ưu nhược điểm riêng, cách cài đặt và viết chương trình cũng khác
nhau. Pycharm supporte très bien le code, cependant il est trop lourd, lorsqu'il s'exécute, il prend environ 1 Go de RAM donc la machine
Avec 4 Go de RAM, il y a souvent des ralentissements. Atom a une belle interface et une bibliothèque d'outils riche, cependant l'outil...
déboguer ne répond pas pour enseigner et apprendre la partie trouver et corriger les erreurs. Thony est très léger, lorsqu'il fonctionne il prend
environ 40 Mo de mémoire, cependant les utilitaires sont très peu nombreux et l'outil de débogage est encore trop simple.
Facile à installer, facile à utiliser, professionnel, bon support lors du codage, bon support pour le débogage, adapté à
chuyên đề F và các kỳ thi HSG theo tôi vẫn là VScode. Khi chạy chiếm tầm 300MB bộ nhớ, tạo một
Le dossier et le code de tous les exercices sont très pratiques. Surtout en classe de 12, j'utilise toujours VSCode pour HTML5 et CSS.
Actuellement, l'outil de support à la programmation pour l'installation simple est utilisé officiellement pour les examens.
Thonny. Donc, si quelqu'un commence à apprendre ou participe à un programme de perfectionnement pour le niveau élite, il devrait utiliser Thonny.
• Ouvrez Thonny, allez dans Outils, choisissez Option, puis choisissez Thème et Police
• UI Theme: Chọn Clean Dark
• Syntaxe : Choisissez demain soir
- Suggestions de code et autofinishing du code lors de la saisie :
Comme l'exemple ci-dessus, nous voyons que la première partie, et très importante, dans la programmation est la déclaration des bibliothèques.
La déclaration de bibliothèque permet d'accéder aux programmes disponibles dans la bibliothèque. Actuellement, Python
il existe un système de bibliothèque énorme sur de nombreux domaines.
Voici la bibliothèque math, qui contient de nombreux modules utilisés pour divers travaux.
mathématiques. Quelques fonctions mathématiques typiques :
Fonction Utilisation
[Link] Constante pi = 3,141592653589793
[Link](x) Retourner le nombre réel qui est la racine carrée du nombre réel positif x. Si nous appelons cette fonction
avec un nombre négatif signalera une erreur
[Link](x) Renvoie la partie entière du nombre réel x. Par exemple : [Link](5.6) = 5
[Link](x) Arrondir vers le bas au nombre entier le plus proche. Par exemple : [Link](5.9) = 5
… …
Il existe encore de nombreuses bibliothèques utiles, que vous découvrirez au fur et à mesure de votre apprentissage.
La partie traitement du problème de calcul simple comporte généralement trois étapes comme dans l'exemple ci-dessus.
• Entrez les informations nécessaires pour l'ordinateur
• Calculer la résolution du problème
• Annonce des résultats de l'article
Partie Contenu de base
Pour saisir des informations à partir du clavier, Python nous prend en charge avec la fonctionentrée()
Fonctionentrée()par défaut, renvoie une chaîne de caractères saisie depuis le clavier. Voici
Voici quelques exemples :
cette manière
Trois entiers x,y,z = map(int, input().split())
- Python fournit une instruction d'affectation pour le calcul : nom_de_variable = expression
Permission
Mô Tả Exemple
mathématiques
Comparer les valeurs des arguments pour voir si elles sont égales
== s'il y a égalité, le résultat retourné sera a == b // Faux
làVrai et inversement seraFaux.
Comparer les valeurs des arguments pour voir s'ils sont différents
hay pas.
!= a != b //Vrai
Si différent, le résultat sera True et
le contraire sera Faux.
Permission
Note Exemple
mathématiques
Cette opération est utilisée pour attribuer une valeur
c = a (à ce moment c aura la valeur =
= la valeur d'un objet pour un
5)
valeur
4,L'algèbre de Boole.
Les opérations logiques dans Python sont identiques à celles des autres langages. Cela comprend
Il existe 3 types de base comme suit :
Magie
Note
mathématiques
Si les deux côtés de cette opération sont True, alors le résultat sera True et
et
Inversement, si l'un des deux côtés est Faux, alors le résultat sera Faux.
Si 1 des 2 parties est vrai, alors le résultat sera vrai et vice versa.
ou si les deux parties sont fausses, alors le résultat renvoyé sera faux.
Ceci est une forme de négation, si l'expression est vraie alors elle renverra faux.
pas
et vice versa.
5, Opérations bit à bit.
Cette opération s'effectue sur les bits des valeurs. Imaginez que vous avez
2 variables a = 12 et b = 15 mais si nous les convertissons en binaire alors 2 variables
cela aura la valeur suivante : a = 00001100 et b = 00001111.
Calcul Exemple
| (a | b) = 14 (00001111)
^ (a ^ b) = 3 (00000011)
>> a>>a = 0
6,Opération d'exploitation.
Cette opération est souvent utilisée pour vérifier si un argument se trouve dans un ensemble.
hợp d’arguments ou non (liste). En Python, nous supportons deux types d'opérations comme suit :
Supposons : a = 4, b = [1,5,7,6,9]
Magie
Remarque Exemple
mathématiques
Si un argument appartient à un ensemble d'arguments, il sera renvoyé.
dans a dans b //Faux
sur True et vice versa
- Cette commande permet d'imprimer une ou plusieurs valeurs à l'écran. Les valeurs dans une commande
in sera imprimé avec un espace entre chaque.
- Quelques exemples :
conditions :
l'ordre1
Commande2
La commande suivante générera une erreurErreur d'indentationniveau de retrait non défini
si condition :
l'ordre1
lệnh2
2. Quelques exemples :
- Python 3 fournit la fonction range() pour créer une liste de nombres dans une plage :
• intervalle(u, v)créer une liste de nombres de u à v-1
• plage(u, v, w)créera une liste de nombres de u à v-1, chaque nombre étant séparé du précédent par w unités
vị
- Quelques exemples de la boucle for :
Tout en condition :
Bloc d'instructions en boucle
-Signification : Tant que la condition est vraie, le bloc d'instructions sera toujours exécuté
3. Exemple illustratif :
Exercice Code d'exemple
Programmez l'entrée d'un nombre entier n = int(input())
dương N et la séquence de nombres entiers A comprenant N éléments.a = liste(map(int, input().split()))
amax =max(a)
Trouvez l'élément le plus grand de la séquence des entiers.
print(amax, end=' ')
la position de celui-ci. (0 < n < 10000 ; |Ai| < 10^9). Sipour i dans la plage(n) :
s'il y a plusieurs éléments ayant la même valeur maximale alors si a[i] == amax :
la réponse est l'élément avec la plus petite position. print(i+1)
pause
Données d'entrée Résultat Ou de la manière suivante :
5 12 2 n = int(input())
a = liste(mapp(int, input().split()))
1 12 -4 -3 12
imprimer(max(a), [Link](max(a)) + 1)
n =deint(input())
Programmer pour entrer N et la séquence nombres A
a = [int(x) for x in input().split()]
composé de N éléments (5 < N < 1000). Je vais trier
[Link]()
trier la séquence A en une séquence non décroissante et
imprimer(*a)
notification de la série A affichée à l'écran après classement
Ou méthode 2 : plus rapide pour l'impression :
classer.
Données d'entrée Résultat n = int(input())
a = list(map(int,input().split()))
5 12345 [Link]()
13254 print(' '.join(str(x)forxina))
-On peut créer une liste où chaque élément est une liste pour obtenir un tableau à deux dimensions.
-Ci-dessous, une illustration de l'opération de saisie et d'impression :
m, n = map(int, input().split())
a = [[]*n for i in range(m)]
forxinrange(m):
a[x] = liste(map(int,input().split()))
#dans un tableau à deux dimensions
imprimer(m, n)
forxinrange(m) :
imprimer(*a[x])
Bài tập Code d'exemple
Donnez un tableau à deux dimensions de taille NxN (N n = int(input())
a =dans
d'un tableau de m lignes et N colonnes). Programmation pour entrer []le tableau
pour i dans la plage(n) :
Salut, trouve et affiche à l'écran les chiffres u = liste(map(int,input().split()))
le plus grand de chaque ligne. (1 < N < 15) [Link](u)
pour i dans la plage(n) :
Données d'entrée Résultat
print(max(a[i]))
3 3
123 6
456 9
789
vous
On peut considérer une chaîne de caractères comme une liste de caractères consécutifs numérotés à partir de 0. Par exemple :
- Parcourir chaque caractère de la chaîne progressivement du début à la fin peut utiliser une boucle for :
forxins:
imprimer(s)
Ou naviguer par index :
pour i dans la plage(len(s)):
imprimer(s[i])
-Pour rechercher une chaîne de caractères qui apparaît dans une autre chaîne : utiliser l'opérateur in
if'quang'in'quangtri':
imprimer('có xuất hiện')
-Pour trouver la position d'une sous-chaîne dans une autre chaîne, utilisez la fonction find(). Cette fonction renvoie la position d'apparition.
Tout d'abord, s'il n'apparaît pas, cela renverra -1. L'exemple suivant donne la réponse : Il apparaît à la position 5
QuangTri_2022
[Link]('Tri') > -1 :
print('Co xuat hien tai vi tri', [Link]('Tri'))
Commande de séparation de sous-chaîne basée sur le caractère défini. Par exemple, ceci séparera la chaîne s = 'Quang Tri 2022' en une
Action Signification
s = [Link]() In hoa kítự đầu tiên mỗi từ. s = ‘Chao Ban’→ Salut les amis
s = [Link]() Convertir toute la chaîne s en minuscules
s = [Link]() Convertir toute la chaîne s en lettres majuscules
x = [Link]('p') Comptez combien de caractères 'p' il y a dans la chaîne s.
• split(): Renvoie une liste contenant les sous-chaînes de la chaîne d'origine séparées par un caractère spécifié
définir
• search(): Fonction de recherche par chaîne spécifiée
Enseignant : Lê Thanh Phú 18|T r a n g
PYTHON DE BASE
• findall() : Renvoie une liste contenant les sous-chaînes correspondant aux exigences de l'opération.
• sub(): Remplacer les sous-chaînes qui apparaissent dans la chaîne d'origine par les chaînes spécifiées
* Les caractères spéciaux utilisés dans les fonctions ReGex :
Caractère Signification Exemple
Kí tự Signification Exemple
\B Khớp với các từ có “ain” xuất hiệnnhưng không phảiở đầu từ r"Bain"
Correspond aux mots contenant "ain" mais pas à la fin du mot pluie\B
\w Trảvềmatch khi chuỗi chứa kí tựchữsố, chữ cái, hoặc dấu gạch "\w"
en dessous
[^arn] Renvoyer une correspondance pour tout caractère sauf les caractères a, r ou n.
[0123] Retourne une correspondance pour tout caractère appartenant à l'ensemble 0,1,2,3
[a-zA-Z] Retourner une correspondance pour n'importe quel caractère appartenant à l'ensemble des caractères majuscules et minuscules
Exercice Programme
a
= [Link]('^a.*b$', s)
Soit la chaîne S composée de plusieurs mots séparés par des espaces. Trouver
et imprime tous les mots commençant par 'P' et se terminant par 'u'. imprimer(a)
importer
Cho une chaîne contenant des caractères et des chiffres, les chiffres ne contiennent pas le re
chiffre 0.
Tête. Séparez les chiffres de la chaîne et imprimez le plus grand nombre. s = input()
si = [Link]('\d+', s)
Vd : Anh1chi8abc12cd24 imprimer(max([int(x) pour x dans so]))
--> 24
Hàmfindall('\d+', s) aidez-nous à tout trouver
un segment contigu contenant des chiffres.
importer
Veuillez programmer le tri des nombres dans cette chaîne re croissant.
par ordre
dần mais garde les caractères alphabétiques intacts. s = entrée()
kt = [Link]('\D+', s)
Vd:Anh24chi12abc1cd8 donc = [Link]('\d+', s)
-> Anh1chi8abc12cd24
Fonctiontrouvertout(‘\D’, s)aide-nous à tout trouver
def cmp(u):
Le segment adjacent ne contient pas de caractères numériques.
(len(u), u)
[Link](clé=cmp)
a = []
pour i dans la plage(min(len(kt),
len(so))):
[Link](kt[i])
[Link](so[i])
si len(kt) > len(so) :
[Link](kt[len(kt) - 1])
print(''.join(a))
g = open("[Link]", "w")
* Lire/écrire des données :
-Syntaxe:Biếntệ[Link]()
[Link] avec des fichiers lors des examens HSG :
-Lorsque l'on accède aux fichiers lors des examens, les opérations sur les variables de fichier peuvent facilement prêter à confusion. À la place, nous pouvons utiliser
Utiliser le fichier d'entrée et de sortie standard. Pour ouvrir le fichier, dans la partie supérieure du programme, on le déclare comme suit :
importer sys
[Link] = open("[Link]", "r")
[Link] = open("[Link]", "w")
Cette commande redirige l'entrée et la sortie standard vers des fichiers. Lors de l'utilisation de ce fichier standard, toutes les opérations
Saisir, sortir des informations comme nous l'avons appris jusqu'à présent avec le clavier et l'écran.
-Python lit des données à partir d'un fichier assez lentement, pour lire des données à partir d'un fichier rapidement, il suffit de déclarer une commande supplémentaire.
3 0 lisez le caractère ' ' à la fin de la ligne. Si les données sont une chaîne de caractères
3 0 ajoutez simplement la commanderstrip()pour enlever ce caractère d'abord
LLQ 1 lors du traitement :s = input().rstrip()
KHQ
3
FDF
GDD
3
KWE
EKW
Cho le fichier de liste comprenant plusieurs lignes, chacune importsys
[Link] = open("[Link]", "r")
dòng est une suite de nombres entiers positifs composée de 3
[Link] = open("[Link]", "w")
S'il te plaît, programme pour lire des informations tantQueVrai:
depuis la liste.
essayer :
ce livre, calculez la somme de chaque séquence de nombres et imprimez le résultat
x,y,z = map(int,input().split())
faire apparaître l'écran. print(x + y + z)
sauf :
[Link] [Link] pause
535 13
234 9 Le fichier ne sait pas combien de lignes donc
Utiliser while pour lire. Commandeessayeraider à attraper les erreurs lors de la lecture
543 12
fichier terminé pourpausefin de la boucle.
formuler de nombreux modules appelés sous-programmes plus petits. Cela apporte aux programmeurs
les avantages :
• Regroupez les segments de code similaires dans une sous-programme, afin de rendre le code plus court.
plus, clair et facile à entretenir.
• Mettez les sous-programmes testés dans la bibliothèque afin que lors de la nouvelle programmation, il suffise de
lien vers cette bibliothèque.
• Những chương trình lớn được thiết kếdạng cấu trúc tốt có thểtrao cho cácnhóm và người
la programmation est différente, parfois il est possible d'engager des gens pour écrire des sous-programmes
không quá phức tạp.
- Python prend en charge deux types de sous-programmes :
2 24 m = int(input())
pour dans la plage(m):
4
n = int(input())
print(Fact(n))
importer sys
Écrire le programme sous Prime(x) pour vérifier
[Link] = open("[Link]", "r")
traxcó est-il un nombre premier ou non.
[Link] = open("[Link]", "w")
Utiliser le sous-programme que vous venezinput=[Link]
d'écrire.
saisir la séquence de nombres entiers a[1], a[2]…
defPrime(x):
a[n], compter combien de paires satisfont la condition
si x <= 1 :
kiện a[i] + a[j] ( ≤ ) là một số nguyên tố. retourner0
[Link] [Link] pour i dans la plage(2, int(x**0.5)+1):
4 5 si x % i == 0 :
retour0
1234 retourner1
n = int(input())
a = liste(map(int,input().split()))
dem = 0
pour i dans la plage(n):
forjinrange(i, n):
ifPrime(a[i]+a[j]) == 1 :
dem += 1
imprimer(dem)
Écrivez un programme conchuanHoa(s) quiimporter
a sys
[Link]=open("[Link]", "r")
la tâche de supprimer les caractères blancs superflus
[Link]=open("[Link]", "w")
mauvais visage
Utiliser le sous-programme que vous venez d'écrire pourdefchuanHoa(s):
lire les informations des élèves, extraire [Link](' ') > -1:
et affichent à l'écran les noms d'usage commun de ceux s = [Link](' ', ' ')
s = [Link]()
cet élève a été normalisé et en majuscules retours
chaque tête de mot.
tandisQueVrai:
[Link] [Link]
essaye :
Le thanh phu Thanh Phu s = entrée()
Tran HUNG fils Hung Son s =chuanHoa(s)
vt = [Link](' ')
s = s[vt+1:]
s = [Link]()
s = [Link]()
imprimer(s)
sauf :
pause
THÈME 8 : CERTAINES AUTRES CHOSES FONDAMENTALES LORS DE LA FORMATION DES ÉLÈVES APTES À EXCELLER
1. Nombre premier :
Le problème Programme correspondant
defPrime(x):
Vérification des nombres premiers
si x <= 1 :
- Thuật toán duyệt căn retour0
pour i dans la plage(2, int(x**0.5)+1):
si x % i == 0 :
retour0
retour1
Vérifier un nombre premier defPrime6k(x):
si x <= 1 :
- Algorithme 6k retour0
si(x == 2) ou (x == 3):
retour1
si(x % 2 == 0)ou(x % 3 == 0):
retour0
k, peut = 5, int([Link](x))
forkinrange(5, peut, 6):
si (x % k == 0) ou (x % (k+2) == 0) :
retour0
retourne1
Désolé, je ne peux pas accéder aux liens. Veuillez fournir le texte que vous souhaitez traduire.
Vérifier si un nombre est premier
L'algorithme de Rabin Miller
Cette technique complexe est réservée
Vous êtes passionné par la recherche.
2. Estimation / Multiples :
defcmp(u):
retourner(tongcs(u), u)
[Link](clé=cmp)
n = int(input())
Cho une séquence de nombres entiers de n parties
a = liste(input().split())
t ..A[n].Veuillez trier la srie de chiffres selon
l'ordre ne diminue pas puis imprime la séquence sur l'écran
defcmp(u):
image. retourner (len(u), u)
Règle de liaison :
[Link](clé=cmp)
• 1 <= n <= 100000 print(' '.join(xforxina))
• 1 <= A[i] <= 10^25
-Faire a[i] <= 10^25 donc il faut utiliser une chaîne pour le stockage. C'est-à-dire
Chaque élément de la liste est une chaîne. Donc, il faut écrire une fonction pour
sánh, car le tri par défaut sera dans l'ordre lexicographique.
Cette fonction va d'abord comparer par la longueur, plus courte
là số bé hơn (Parce qu'il n'y a pas de chiffre 0 au début), si la longueur est la même
Alors, le nombre le plus petit sera le plus petit.
17
Có n con virut, con thứ i có sức phá hoại n = int(input())
là a[i] et la capacité de diffusion est b[i] et la capacité a = []
pour dans la plage(n):
L'énergie qui a été détruite est c[i]. Veuillez trier les
u,v,z = map(int,input().split())
avec virus selon l'ordre de susceptibilité à être détruit [Link]([u, v, z])
ne diminue pas. Si la capacité de subir est la même
détruire puis organiser selon la capacité de développement
defcmp(u):
return(u[2], -u[1], -u[0])
tán non ne va pas augmenter. Si c'est identique à la capacité.
virut (2, 4, 1); con virut (2, 4, 1) sẽxếp -Tout d'abord, comparer selon u[2] est la capacité d'être éliminé faible.
plus devant la colère ne diminue pas
avant le virus (1, 4, 1).
-Si c'est u[2], alors comparez selon-u[1] la capacité de développement.
Entrer Sortie
tán bé mieux debout, mà-u bé mieux avant
4 671 đương với u[1] lớn hơn xếp trước, tức là không giảm.
111 311 -Si deux têtes sont ensemble, elles seront alors comparées à -u[0] plus petites.
311 799
671
Tèo a écrit un grand nombre sur importer functools
un rouleau de papier long et je veux le montrer à
n = int(input())
le frère Tí est revenu avec le résultat atteinta
= []
D'accord. Cependant, quand Tèo vient de sortir pour dans la plage(n):
s = input()
Pour appeler mon frère, ma petite sœur Mì [Link](s)
court dans la pièce et déchire le rouleau de papier
defcmp(u, v):
devenir plusieurs morceaux. Le résultat est sur
ifu+v > v+u:
chaque morceau a un ou plusieurs chiffres retour-1
l'ordre a été écrit. ifu+v == v+u :
retour0
Maintenant, Tèo ne peut pas se souvenir exactement.
retourner1
je me suis demandé quel chiffre j'avais écrit. Téo a corrigé.
[Link](key=functools.cmp_to_key(cmp))
c'est un très grand nombre. Pour faire plaisir
print(''.join(xforxina))
le cœur de son petit frère, Tí a décidé de poursuivre
trouver quel est le plus grand nombre que Tèo a eu -Theo quy định: La fonction de comparaison cmp(u,v) doit retourner -1,
0, 1:
écrire sur le rouleau avant d'être déchiré. • -1 : Si u est avant v
Aidez Tí à faire ce travail. • 1: Si u est organisé après v
Règle • 0, tous les chefs se ressemblent.
La fonction ci-dessus compare pour décider si la chaîne u précède la chaîne.
• 0 < n < 5050
v quand :
• S'il vous plaît, écrivez le nombre sur chaque morceau de papier.
• u xếp trước crée la chaîne de chiffres : u+v
pas plus de 100.
• u xếp sau tạo ra xâu số : v+u
Entrer Sortie
4. Recherche binaire :
-Il existe une bibliothèque bisect qui fournit deux fonctions de recherche binaire très intéressantes :
5. Tas :
- Le heap est un type de structure de données en forme d'arbre, et tous les nœuds de cet arbre sont triés selon un ordre
certainement, cela peut être dans l'ordre croissant ou décroissant.
- Python fournit la bibliothèque heapq pour manipuler des tas : Par défaut, c'est un tas min
• [Link](a) Convertir la liste a en tas
• u = [Link](hp) Retirer l'élément le plus petit de la pile
• [Link](hp, u) Ajouter l'élément u dans le tas
-Exemple :
Exercice Programme
importerheapq
Il y a un tas de gravier numéroté de 1 à
n = int(input())
n, le tas i a a[i] billes. Nous pouvons a = liste(map(int, input().split()))
fusionner deux tas de gravier en unhp = []
le coût est la somme totale des deux forxina:
[Link](hp, x)
cette pile. chiphi = 0
tant que len(hp) > 1 :
Demande : Trouver un moyen de rassembler n tas de cailloux
u = [Link](hp)
devenir un seul tas avec un coût total v =[Link](hp)
ghép nhỏnhất. chiphi += (u + v)
[Link](hp, u+v)
Entrer Sortie
imprimer(chiphi)
3 16
282
6. Dict–Python:
- Si vous avez déjà utilisé un tableau de marqueurs dans Pascal, vous constaterez que c'est une excellente méthode pour aider à……
la présence de certains très rapidement en O(1). Cependant, le tableau de marquage est limité par ses contraintes.
déclaration de tableau.
- En Python, le type Dictionary nous permet de stocker plusieurs éléments, chaque élément étant une paire.[key
: valeur]aider à marquer la valeur declélàvaleur.
Par exemple : c = {1: 'Phu', 'ab': 5} nous aide à indiquer que c[1] = 'Phu' et c['ab'] = 5.
- Ce type de Dict en Python est beaucoup plus flexible et puissant que les tableaux marqués.
- Certaines opérations :
• Initialiser un dictionnaire vide : c = {}
• Ajouter un élément (Marquer) c[1] = ‘Phú’
• Accéder à l'élément x dans le dict [Link](x)
• Supprimer l'élément x du dict supprimer c[x]
Exercice Programme
Donnez la liste de n entiers positifs qui ont n = int(input())
a = liste(map(int,input().split()))
valeur ne dépassant pas un million. Programmation pour trouver
c = {}
le plus petit entier positif qui n'est pas présentforxina
dans la liste ci-dessus. c[x] = 1
lim=max(a) + 1
Importer Sortie pour i dans la plage(1, limite + 1) :
si [Link](i) == None :
5 2 imprimer(i)
pause
53164
n =
Donnez un nombre entier positif n et une séquence int(input())
a = liste(mappent(int,input().split()))
A comprend n nombres entiers positifs. On appelle
c = {}
Certains a[i] ont des amis s'il existe un forxina:
[Link](x) != None :
une position j différente de i et a[j] = a[i]. Veuillezc[x] compter
+= 1 le nombre
sinon
le nombre de chiffres que vous avez dans la séquence ci-dessus. :
c[x] = 1
Importer Sortie dem = 0
9 3 forxinc:
[Link](x) > 1 :
12 5 1 7 10 6 1 1 3 dem += [Link](x)
imprimer(dem)
Les passionnés de recherche peuvent lire davantage : Defaultdict dans la bibliothèque collections. Defaultdict
similaire à dict mais plus rapide et moins sujet aux bogues.
7. Ensemble–Python :
- Un set en Python est un ensemble de valeurs sans ordre. Chaque valeur dans le set est unique, ne peut pas
répétitif et immuable (c'est-à-dire que vous ne pouvez pas modifier la valeur des éléments dans l'ensemble). Cependant, nous avons
ajouter ou supprimer des éléments dans un ensemble.
Quand utiliser un ensemble :
• Lorsqu'il s'agit de gérer un ensemble d'objets distincts, sans duplications.
• Ajouter un élément à l'ensemble rapidement : O(1)
• Supprimer un élément d'un ensemble rapidement : O(1)
• Vérification rapide si un objet appartient à un ensemble stocké : O(1)
Certaines actions
Action Exemple
Initialiser un ensemble : #set vide :
S = ensemble()
- Utiliser des {} ou set()
un ensemble de nombres
S'il y a des éléments en double, ils seront supprimés
S1 = {5,7,8,6}
laisser un seul un ensemble de type chaîne
s2 = {"hello", "hi", "xin chao"}
ensemble avec un type de données mixte
s3 = {"hello", 5, (1,5,7)}
Ajouter un élément [Link](5)
<tên set>.ajouter(élément)
Supprimer l'élément : il est recommandé d'utiliser discard si [Link](x)
Supprimer sans x dans l'ensemble ne provoquera pas d'erreur.
- enlever(x)
- jeter(x)
Xoá toàn bộ set [Link]()
- effacer()
Vérifier si un élément est dans un ensembleifxinS:
:
- dans print('Có')
pas dans
Exercice Programme
- Cho une liste, prendre les 4 plus petits nombres, 3importheapq
Kết quả:
[1, 2, 4, 4]
[9, 8, 8]
importercollections
- Cho une liste, prenez 3 éléments qui sont des nombres
Résultat :
["(5, 6)","(1, 5)","(2, 4)"]
- Synchro-signal de longueur 3: importitertools
(1, 2, 3) a = [1,2,3]
b = list([Link](a))
(1, 3, 2) forxinb:
(2, 1, 3) imprimer(x)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
Nombre de combinaisons de 2 parmi 3 : importitertools
(1, 2) a = [1, 2, 3]
b = liste([Link](a, 2))
(1, 3) forxinb:
(2, 1) imprimer(x)
(2, 3)
(3, 1)
(3, 2)
-Exercice: Lire à partir du fichier d'entrée 106un nombre entier positif dont la valeur ne dépasse pas 109Filtrer la liste des numéros pairs
et enregistrez dans un fichier de sortie, les nombres séparés par des espaces.
1. Utiliser des sous-programmes et des variables locales :
Utiliser des sous-programmes pour rendre le programme plus rapide.
- Utiliser une variable locale pour une vitesse de traitement plus rapide
forxina: [Link](int(input()))
si x %2==0: forxina:
print(x,end=' ') si x % 2 == 0 :
print(x,end=' ')
xuly()
Temps de traitement (approximativement) : 1,19s Temps de traitement : 1,07 s
2. Saisir le tableau plus rapidement :
Lorsque la taille du tableau est connue, il est préférable de la déclarer à l'avance plutôt que d'utiliser l'ajout.
defxuly() :
[Link] = open("[Link]", "r")
[Link] = open("[Link]", "w")
n = int(input())
a = [0]*n
pour dans la plage(n):
a[i] = int(input())
forxina
ifx %2==0:
print(x, fin=' ')
xuly()
Temps de traitement : 1,05 s
par défaut. Pour l'utiliser, il suffit d'ajouter au commandesinput = [Link] vous ouvrez le fichier.
Remarque : Lorsque vous ajoutez cette commande, soyez très prudent car elle lira toute la ligne et lira également le caractère de saut de ligne qui est
'\n' à la fin. Si vous lisez un nombre, ce n'est pas grave, si vous lisez une chaîne, vous devez l'enlever en utilisant input().replace('\n', '').
-Pour enregistrer les données plus rapidement : Limitez l'enregistrement multiple : en les combinant en une seule chaîne et en les enregistrant une fois.
importsys, temps
defxuly() :
[Link] = open("[Link]", "r")
[Link] = open("[Link]", "w")
input= [Link] Ordre d'ajout pour lire plus vite
n = int(input())
a = [0]*n
pour dans la plage(n) :
a[i] = int(input())
b = []
forxina:
si x % 2 == 0 :
[Link](x)
s = ' '.join(str(x) for x in b) Relier en chaîne pour limiter l'impression des commandes
imprimer(s) plusieurs fois
xuly()
Temps de traitement : 0,38 s
- Avec seulement 3 actions optimisées comme ci-dessus, un programme qui avait un temps d'exécution excessif (1.19s) a été réduit à
dans le temps imparti (0,38s) et a obtenu tous les points de l'exercice.
4. Quelques autres astuces :
- Vous pouvez googler avec le mot-clé : performance de Python
-Pour lire plus de techniques d'optimisation du code Python
5. Ajouter des éléments :
- Vous devez accepter le fait que, aussi optimisé soit-il, cela reste encore trop lent par rapport aux autres langues.
une autre langue. Il se peut donc qu'il soit accepté TLE dans certains exercices lors de la participation aux compétitions HSG.
-D'autres amis qui souhaitent atteindre l'objectif de remporter le premier prix ou de participer à des compétitions plus élevées, le conseil de
Je suis vos amis, donc vous devriez apprendre le C++.
name ='Tenbai'
deftaoinput(itest)
[Link] = open(name + '.inp', 'w')
#décalage de commande pour créer un input
[Link]()
defxuli(itest):
[Link] = open(name + '.inp')
[Link] = open(name + '.out', 'w')
#liste de commandes de devoir
[Link]()
[Link]()
foritestinrange(1,21):
taoinput()
xuli(itest)
déplacer_fichier(itest)
-Exercice : TONG.*
Écrivez un programme pour calculer la somme de deux entiers a et b lus à partir du fichier [Link].
Les résultats sont enregistrés dans le fichier [Link].
Règle : 60% test a : 0 ≤ a, b ≤ 105 ;40% test có:0 ≤ a, b ≤ 1012
importsys, aléatoire, os, shutil
name ='Tong'
defghiinput(gioihan):
a = [Link](0, gioihan)
b = [Link](0, gioihan)
imprimer(a, b)
deftaoinput(itest):
[Link] = open(name + '.inp', 'w')
si testinferieur <=12 :
ghiinput(10**5)
sinon :
ghiinput(10**12)
[Link]()
defxuli(itest):
[Link] = open(name + '.inp')
[Link] = open(name + '.out', 'w')
a, b = map(int, input().split())
imprimer(a + b)
[Link]()
[Link]()
PyPy:
• Accéder à la page d'[Link]élécharger la dernière version de PyPy3x :
Lorsque vous créez des sujets pour les examens, tout le monde devrait essayer de coder la solution en C++ et en Python, puis de continuer.
test sur Themis pour déterminer une limite de temps générale appropriée pour l'exercice.
Ne pas séparer ou avoir du temps pour Python.