0% ont trouvé ce document utile (0 vote)
12 vues44 pages

Exercices d'introduction à Python

Le document est un cahier d'exercices sur l'informatique pour l'ingénierie, principalement axé sur l'apprentissage du langage de programmation Python. Il couvre divers sujets tels que l'environnement de développement, les entrées/sorties, les fonctions prédéfinies, ainsi que les instructions de contrôle et la gestion des exceptions. Chaque section contient des exercices pratiques pour renforcer les compétences en programmation.

Traduit par

ScribdTranslations
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues44 pages

Exercices d'introduction à Python

Le document est un cahier d'exercices sur l'informatique pour l'ingénierie, principalement axé sur l'apprentissage du langage de programmation Python. Il couvre divers sujets tels que l'environnement de développement, les entrées/sorties, les fonctions prédéfinies, ainsi que les instructions de contrôle et la gestion des exceptions. Chaque section contient des exercices pratiques pour renforcer les compétences en programmation.

Traduit par

ScribdTranslations
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2022

2023

Cahier d'exercices
INFORMATIQUE POUR L'INGÉNIERIE
Cahier d'exercices

Table des matières

EXERCICE 1. ENVIRONNEMENT ET INTRODUCTION À PYTHON : PREMIERS PAS........................................................................2

IINTRODUCTION.......................................................................................................................2

EXERCICE 2. ENTRÉE-SORTIE ET FONCTIONS PRÉDÉFINIESS ................................................7

EXERCICE 3. INSTRUCTIONS DE CONTROL I ET GESTION DES EXCEPTIONS.................................10

EJERCICIO 4. SECUENCIAS: LISTAS-TUPLAS-CADENAS. ESTRUCTURAS DE CONTROL II ...........13

EXERCICE 5. MATRICES. LISTE DE LISTES............................................................................21

EXERCICE 6. FONCTIONS ET MODULES................................................................................24

EXERCICE 7. PERSISTENCE : FICHIERS ...............................................................................30

EXERCICE 8. TKINTER. INTERFACES GRAPHIQUES. PARTIE I. INTRODUCTION ......................32

JeINTRODUCTION.....................................................................................................................32
WIDGETS .............................................................................................................................33
CPLACER LES WIDGETS DANS LA FENÊTRE......................................................................................35

EXERCICE 8. INTERFACES GRAPHIQUES UTILISATEUR. PARTIE II.................................................38

1
Cahier d'exercices

Exercice 1. Environnement et Introduction à Python : premiers pas

Objectifs

• Gérer l'interpréteur Python.


• Connaître Thonny (IDE). Créer, ouvrir des programmes et les exécuter.
• Travailler avec les types de données de base de Python et effectuer des opérations simples
avec les mêmes.
• Premiers programmes en Python et les commenter.
• Se familiariser avec le débogage.

Introduction
Python est un langage de programmation à usage général qui peut être dit que c'est
multiparadigme, car il prend en charge la programmation orientée objet, la programmation impérative et, dans une moindre mesure

mesure, programmation fonctionnelle. C'est un langage interprété, utilise le typage dynamique et est
multiplateforme. C'est un bon langage pour s'initier au monde de la programmation en raison de sa
simplicité, polyvalence et rapidité de développement, cela est dû au fait que sa syntaxe est très simple.
Un autre avantage est qu'il possède une licence open source. Pour écrire des programmes en Python ne
il faut plus que de télécharger le langage qui dispose de son propre IDLE (Integrated
Environnement de Développement et d'Apprentissage
Python). Cet IDLE comprend deux fenêtres : la fenêtre Shell et la fenêtre de l'éditeur. Ici
nous pouvons introduire les instructions et voir directement le résultat que cela nous fournit
interprète. Pour télécharger Python, vous pouvez vous rendre sur la page [Link] Dans les
Les exercices utiliseront la version 3.6.5 ou ultérieure.

En plus de l'IDLE de Python lui-même, il existe des outils plus complets pour écrire les
programmes, ce que l'on appelle habituellement l'IDE (Environnement de Développement Intégré).
Certaines options sont payantes et d'autres gratuites. Pour ce cours d'introduction à la programmation,
Thonny a été choisi. C'est un IDE facile à utiliser, simple, gratuit et multiplateforme (Windows, Linux
y Mac). La page d'où vous pouvez le télécharger et obtenir plus d'informations est : [Link]

Enoncés : Travail en classe

Se familiariser avec Thonny


Sur la propre page de téléchargement de Thonny, il y a une petite vidéo qui dure environ cinq minutes.
et qui sont suffisants pour que tu connaisses les éléments principaux de cet IDE. Ici, seulement tu
nous allons présenter les fenêtres principales et les options les plus courantes.

2
Cahier d'exercices

Environnement Thonny

Éléments principaux de l'environnement :

a. Barre de menus :
• File. Opciones para Crear, Guardar, Abrir o Imprimir programas.
• Éditer. Copier, Coller, Couper, mettre des commentaires en Python, nettoyerShell, etc.
• Afficher. Montrer/Cacher des fenêtres, changer la taille des lettres, etc.
• Run. Ejecutar,Debugde programar,Breakpoints, etc.
• Outils. Ajouter des paquets, OuvrirShell, etc.
b. Options les plus courantes
•Crear un programa en blanco, abrir un programa, guardar, ejecutar, opciones
dedebugystop.
c. Code du programme actuel. Permet d'avoir plus d'une fenêtre ouverte avec différents
programmes.
d. Shell peut exécuter les instructions et voir le résultat de celles-ci.
e. Différentes fenêtres où il convient de souligner la fenêtre des variables qui permet de voir la valeur
des variables du programme.
f. Travail avec des objets.

Écrire des déclarations directement

On utilisera la fenêtre Shell pour écrire des commandes. Se positionner dans l'invite et écrire les
les phrases suivantes :

3
Cahier d'exercices

Jouez avec le langage et effectuez des opérations mathématiques courantes, vous pouvez utiliser des chaînes de
caractères comme dans l'exemple.

Créer un programme et exécuter un programme


Les programmes sont enregistrés dans des fichiers avec l'extension .py et sont ouverts pour les modifier ou les tester.
simplement comment ils fonctionnent. Ils s'écrivent dans la fenêtre de code, sur le côté gauche.
les numéros correspondants à chaque ligne du programme apparaissent. Dans notre exemple, le
le programme a cinq lignes.
Pour voir l'exécution du programme, il est nécessaire de l'enregistrer, Thonny le fait de manière
automatique avant son exécution, et si le programme n'a pas été sauvegardé, demande le nom
du même. Pour enregistrer un programme, il suffit de sélectionner l'option Enregistrer dans le menu Fichier.

appuyer sur le bouton de la barre Dans ce cas, nous avons nommé le programme "[Link]", et dans
L'écran de la fenêtre affiche le nom reflété dans l'onglet.
Pour exécuter le programme actuel, il est nécessaire de sélectionner l'option Exécuter le script actuel dans le menu.

Exécutez, appuyez sur la touche F5 ou cliquez sur le


. bouton
Le résultat de l'exécution peut être vu dans le Shell, dans la fenêtre des variables nous pouvons voir les
variables et la valeur de celles-ci comme résultat de l'exécution du programme. Les erreurs que
pourrait également apparaître dans la fenêtre Shell.

Exercice 1.1. Variables

Crea tres variables de tipo entero y asígnales los siguientes valores: 5, 14, 37. Escribe las
les phrases suivantes :

4
Cahier d'exercices

• Deux phrases en appliquant les opérateurs +, *, (, et ), sans varier l'ordre des


numéros se obtiennent les résultats suivants : 703 et 523.
• Utilisez un opérateur qui indique si c'est vrai que 14 est inférieur à 37.
• Montre combien de fois 5 entre exactement dans 14.
• Faites une déclaration qui calcule le reste de la division de 14 par 5, puis ajoutez-le à 37.

• Élever 14 à la cinquième puissance.


• Quel type de donnée obtenons-nous lorsque nous appliquons un opérateur relationnel ?

• Écris une expression dans laquelle tu mélanges deux types d'opérateurs différents et qui soit
valide le résultat que tu obtiens.

Ejercicio 1.2. Cadenas I

Crea dos variables de tipo cadena de caracteres. Asígnales los siguientes valores: “Buenos” y
«jours». Écrivez les phrases suivantes :

• En appliquant les opérateurs appropriés, on obtient le résultat Bonjour


• Obtenir le résultat BonjourBonjourBonjour
• Imprimer une lettre de la variable 1 sur chaque ligne.
• Imprimer sur chaque ligne une lettre de la variable 2 mais en commençant par la dernière
jusqu'à la première.

Exercice 1.3. Chaînes II


Créer deux variables de type caractère et leur attribuer la valeur suivante : "abc" et "aAb". Créer les
sentences that allow to know if:

• Les deux variables sont égales.


• La première variable est inférieure à la deuxième variable.
• La deuxième variable est inférieure à la première.

Ejercicio 1.4. Comentarios

Comentar los programas anteriores utilizando los distintos tipos de comentarios.

Exercice 1.5. Précédence

Dando los siguientes valores: a = 20, b = 10, c = 15 y d = 5. Realice los siguientes cálculos:

• (a + b) * c / d
• ((a + b) * c) / d
• (a + b) * (c / d)
• a + (b * c) / d
Vérifiez le résultat et commentez comment la priorité est résolue.

Exemple du résultat :

• La valeur de (a + b) * c / d est 90.0


• La valeur de ((a + b) * c) / d est 90,0

5
Cahier d'exercices

• La valeur de (a + b) * (c / d) est 90.0


• La valeur de a + (b * c) / d est 50.0

Exercice 1.6. Calculer la distance entre deux points

Dados dos puntos en el espacio calcular la distancia que los separa (asignar los valores
directement). Les points seront définis par leurs trois coordonnées x, y, z. La formule pour calculer
la distance est celle indiquée ci-dessous.

= 1(− 2+ )12− 2(+ 1− )22 ( )2


Exemple du résultat :

La distance entre les points (2.0, 3.0, 4.0) et (5.0, 6.0, 7.0) est :
5.196152422706632

Exercice 1.7. Liste


Écris quatre expressions valables, où tu peux identifier dans chacune d'elles deux ou plusieurs de
trois types de données différents, et deux ou plusieurs types d'opérateurs différents.

Exercice 1.8. Déboguer


Se familiariser avec le débogage pour vérifier comment les variables changent au fur et à mesure.
exécution d'un programme.

Énoncés : Travail complémentaire

Complémentaire 1.1. Réaliser les exercices d'Introduction à Python du carnet de


exercices résolus.

Complementaire 1.2. Recherche sur le web des applications connues utilisant le langage de
programmation Python.

6
Carnet d'exercices

Exercice 2. Entrée-Sortie et Fonctions prédéfinies

Objectifs

• Entrée et sortie de données.


• Invoquer des fonctions prédéfinies.
• Utiliser les méthodes de la classe str.
• Realizar importaciones de módulos.

Énoncés : Travail en classe

Exercice 2.1. Calculer la distance entre deux points donnés par l'utilisateur

Demander à l'utilisateur les valeurs de deux points dans l'espace et calculer la distance qui les sépare.
Les points seront définis par leurs trois coordonnées x, y, z. La formule pour calculer la distance est
la que se montre ci-dessous.

• Les valeurs de (x, y, z) seront demandées à l'utilisateur et seront de type flottant.


• On utilisera l'importation du module math pour la racine et la puissance.
• Le résultat sera affiché en arrondissant à deux chiffres et en utilisant le format.

= 1(− 2+ )12− 2(+ 1− )22 ( )2


Ejemplo del resultado:

Donnez-moi la coordonnée X1 5.2


Donnez-moi la coordonnée Y1 3.8
Donne-moi la coordonnée Z1 2
Donne la coordonnée X2 6.1
Donnez-moi la coordonnée Y2 7.8
Donne la coordonnée Z2 1
La distance entre les points (5.2,3.8,2.0) et (6.1,7.8,1.0) est de 4.22

Exercice 2.2. Noms

Pedir al usuario su nombre y sus dos apellidos, almacenarlos en tres variables. Hacer las
phrases suivantes :

• montrer le nom et le prénom. tout en minuscules.


• MONTRER LE PREMIER NOM DE FAMILLE, LE DEUXIÈME NOM DE FAMILLE, ET LE NOM. TOUT EN MAJUSCULES.

• Montrer le premier nom de famille, le deuxième nom de famille et le prénom. En majuscules le premier.
letter of each word.
Exemple du résultat :

Donne-moi le nom Juan


Donne-moi le nom de famille 1 bon
Donne le nom de famille 2 montes
Juan Bueno Montes
BUENO MONTES JUAN
Bien Montes Juan

7
Cahier d'exercices

Exercice 2.3. Changer des chaînes

C'était le meilleur des temps, c'était le pire des temps


c'était l'époque de la sagesse, c'était l'époque de l'insensée, c'était l'époque de la croyance,
c'était l'époque de l'incrédulité, c'était la saison de la lumière, c'était la saison des ténèbres, c'était la
printemps de l'espoir, c'était l'hiver du désespoir. Réaliser les suivantes
modifications à la phrase :

• Changer à toute la phrase le mot temps par moments.


• Changer dans toute la phrase obtenue dans la section précédente le mot âge par
époque.
• Mostrar el número de caracteres que tiene la nueva frase.
• Montrer à quelle position se trouve le mot espoir dans la phrase
original.
• Indiquer si la phrase originale est plus longue que la nouvelle phrase.

• Afficher les 20 premiers


• Passer la phrase au présent en changeant le temps du verbe était par est.
• Mettre La Première Lettre De Chaque Mot En Majuscule De La Nouvelle Phrase.
• Enlevertouslescaractèresblancdelafraseoriginale.

Exercice 2.4. Vérifications

Faites les vérifications suivantes :

• Demandez un numéro de téléphone fixe à l'utilisateur et vérifiez que le numéro soit valide. C'est
válido si tiene el tamaño adecuado y todos los caracteres son números.
• Demande le nom de la rue et vérifie que tous les caractères qui la composent sont
lettres et/ou espaces. Il doit contenir au moins un caractère qui ne peut pas être blanc.
• Demander le DNI et indiquer s'il est correct. Il doit avoir 9 caractères, les 8 premiers de
ce sont des chiffres et la dernière une lettre majuscule.
• Demander l'âge sous forme de valeur entière et vérifier s'il est dans la plage de 18 à 81
les deux inclus.

Ejercicio 2.5. Aleatorios


Créez trois variables de type entier et initialisez leur valeur à zéro. Générez trois nombres aléatoires dans
le rang 1-100 inclus et les attribuer aux variables déjà créées :

• Multipliez la première valeur par la constante PI, arrondissez le résultat au nombre


entier supérieur le plus proche

• Vérifier si la deuxième valeur est un nombre pair.


• Faire la soustraction du deuxième nombre par le troisième.
• Concaténer la valeur obtenue au premier point avec la valeur absolue obtenue dans
le point précédent et l'afficher à l'écran.

8
Cahier d'exercices

Enunciados: Trabajo complementario

Complémentaire 2.1. Réaliser les exercices de chaînes du cahier d'exercices résolus.

9
Cahier d'exercices

Exercice 3. Instructions de contrôle I et gestion des exceptions

Objetivos

• Utiliser des instructions de contrôle conditionnel If/Else.


• Appliquer des instructions itératives. Tant que

• Éviter les exceptions : try/except

Énoncés : Travail en classe

Ejercicio 3.1. Múltiplos


Développer un programme qui demande à l'utilisateur deux données numéraires entières. Vérifier que
son entiers et visualiser comme résultat un message qui indique si l'un des données est
multiple de l'autre.

Exemple du résultat :

Donnez un nombre entier : 9


Donne-moi un autre nombre entier : 36
36 est multiple de 9

Exercice 3.2. Calculs pour un cercle

Concevoir un programme qui, à partir du rayon d'un cercle, permet de calculer son diamètre.
périmètre et aire. Pour cela, un menu d'options possibles sera présenté à l'utilisateur. S'il choisit un
Une option différente de celles présentées affichera un message d'erreur (l'option peut être dans
majuscules ou minuscules) et l'option sera redemandée. Le résultat sera affiché avec trois
décimales, et la valeur reçue peut être entière ou flottante.

Exemple du résultat :

Donne-moi le rayon : 42,5


Calculs possibles
a) Calculer le diamètre
b) Calculer le périmètre
c) Calculer l'aire
d) Sortir
Option ====> b
Le périmètre est de 267,035
doit être supérieur à 1.

Exercice 3.3. Somme des chiffres

Sumar los dígitos de un número entero positivo previamente introducido por el usuario. Piensa
deux façons différentes de le faire.

Exemple du résultat :

Donne-moi un numéro : 91.


Résultat : 10.
Donne-moi un numéro : 23.
Resultado: 5.

10
Cahier d'exercices

Ejercicio 3.4. Qué imprime el print

Le programme qui suit indique qu'il imprime l'instruction print chaque fois qu'il
ejecuta, si es que se ejecuta. Si tienes dudas de cómo se comporta el programa utiliza el Debug
pour voir comment les variables changent : i, j, k.

i, j, k = 0, 0, 0
tandis que i < 3 :
tandis que j < 3 :
tandis que k < 3 :
imprimer(i,j,k)
k += 1
j += 1
k=0
i += 1
j=0

Exercice 3.5. Deviner un nombre


Le programme générera automatiquement un nombre entre 1 et 100. L'utilisateur essaiera de deviner le
numéro et aura 5 essais pour cela. Pour chaque essai de l'utilisateur, le programme indiquera si le
Le nombre est supérieur ou inférieur à celui généré. Le programme se terminera lorsque les 5 seront atteints.
tentatives ou lorsque le numéro est deviné.
À la fin, le nombre de tentatives consommées et quels numéros ont été affichés.
introduits.

Ejemplo del resultado:

Devine 50
Le numéro que tu dois deviner est plus grand.
Devine 75
Le numéro que tu dois deviner est plus grand
Devine 90
Le numéro que tu dois deviner est plus grand
Devine 95
Le numéro que tu dois deviner est plus petit
Adivina 93
Le nombre que tu dois deviner est inférieur
Intentos intento1 50 intento2 75 intento3 90 intento4 95 intento5 93
Numéro 92
Tu as perdu

Enunciados: Trabajo complementario

Complémentaire 3.1. Nombres amicaux

Introduire deux nombres entiers et positifs et imprimer s'ils sont amis. Deux nombres amis sont
deux nombres entiers positifs a et b tels que la somme des diviseurs propres de l'un est égale à
un autre numéro et vice versa.

Exemple du résultat :

Introduire le premier numéro : 220.


Introducir el segundo número: 284.
Les nombres 220 et 284 sont amis.
Introduire le premier nombre : 5.
Introduire le deuxième nombre : 6.
Les nombres 5 et 6 ne sont pas amis.

11
Cahier d'exercices

Complémentaire 3.2. Générer une paire de nombres premiers.

Introduisez un nombre entier positif (N), et générez N paires de nombres premiers jumeaux (deux
Les nombres sont des jumeaux premiers si, en plus d'être des nombres premiers, la différence entre eux est
exactement deux).

Exemple du résultat :

Introduire un numéro : 4.
Resultado:
Parejas de números son: 3 y 5, 5 y 7, 11 y 13, 17 y 19.

Complémentaire 3.3. Progression arithmétique.

Introducir un número entero y positivo. Comprobar la siguiente igualdad, visualizando cada uno
des termes :

1 3 +2 3+ 3 +⋯
3
= 1+( 2 + 3+. . )2
Exemple du résultat :

Introduire un nombre : 5
Resultado: 225. Afirmación correcta.
Vérification :
Égalité 1 : 1 + 8 + 27 + 64 + 125 = 225
Égalité 2 : 15^2 = 225

Complémentaire 3.4. Calcul du nombre parfait

Verificar si un número introducido es un número perfecto. Un número es perfecto si la suma de


ses diviseurs est égal au nombre.

Exemple du résultat :

Introduire le numéro : 28
Le 28 est un nombre parfait. Ses diviseurs sont : 1 + 2 + 4 + 7 + 14.
Introducir el número: 5.
Le 5 n'est pas un nombre parfait.

12
Cahier d'exercices

Ejercicio 4. Secuencias: Listas-Tuplas-Cadenas. Estructuras de


Contrôle II

Objectifs

• Profondir dans le travail avec des séquences : chaînes, listes et tuples.


• Ajouter, insérer et supprimer des éléments.
• Utiliser les différentes méthodes existantes pour la manipulation de séquences.
• Maîtriser l'une des structures de contrôle les plus utilisées : for.

Enunciados: Trabajo en clase

Exercice 4.1. Approcher la valeur de e

La valeur de e peut être approximée avec la série suivante :



1
=
!
=0

Développez un programme qui demande à l'utilisateur le nombre d'additions qu'il souhaite effectuer.
s'approcher de la valeur de e. Imprimez le résultat de chaque itération. Montrez le terme calculé
et la valeur de la somme et la différence de celle-ci avec la valeur de la constante e de Python.

Exemple du résultat :

Indica el número de repeticiones : 12


N= 0 es 1.0 sumatorio 1.0 diferencia 1.718281828459045
N= 1 es 1.0 sumatorio 2.0 diferencia 0.7182818284590451
N= 2 es 0.5 sumatorio 2.5 diferencia 0.2182818284590451
N= 3 es 0.16666666666666666 sumatorio 2.6666666666666665 diferencia
0,05161516179237857
N= 4 es 0.041666666666666664 sumatorio 2.708333333333333 diferencia
0,009948495125712054
N= 5 es 0.008333333333333333 sumatorio 2.7166666666666663 diferencia
0,0016151617923787498
N= 6 es 0.001388888888888889 sumatorio 2.7180555555555554 diferencia
0,0002262729034896438
N= 7 es 0.0001984126984126984 sumatorio 2.7182539682539684 diferencia
2.7860205076724043e-05
N= 8 es 2.48015873015873e-05 sumatorio 2.71827876984127 diferencia
3,0586177750535626e-06
N= 9 es 2.7557319223985893e-06 sumatorio 2.7182815255731922 diferencia
3.0288585284310443e-07
N= 10 es 2.755731922398589e-07 sumatorio 2.7182818011463845 diferencia
2,7312660577649694e-08
N= 11 es 2.505210838544172e-08 sumatorio 2.718281826198493 diferencia
2,260552189881082e-09
Remarque : Utiliser la fonction format et importer la constante e et la fonction factorielle.

13
Cahier d'exercices

Ejercicio 4.2. Imprimir sin vocales


On demandera à l'utilisateur une phrase quelconque et le programme affichera cette même phrase, mais
eliminando las vocales, y mostrando al final el número total de letras, vocales y espacios de la
prière donnée par l'utilisateur.

Exemple du résultat :

Ceci est un test pour savoir comment cela fonctionne.


programme
st s n prb pr sbr cm trbj l prgrm
Número de letras = 54 Número de vocales = 21 y Espacios = 9

Exercice 4.3 : Supprimer une lettre d'un mot

Demander une phrase à l'utilisateur et créer avec elle une liste. Afficher à l'écran les mots qui
former la liste. Demander à l'utilisateur une lettre et supprimer cette lettre de tous les mots de la liste
montrant la position du mot dans la liste et la position de la lettre dans le mot. Montrer
comment la liste se présente et compter le nombre de lettres supprimées.

Ejemplo del resultado:

Jeudi a des avantages très intéressants que les autres jours


ils n'ont pas
["le","jeudi","a","des","avantages","très","intéressants","que","d'autres"]
'días', 'no', 'tienen']
Donne la lettre à éliminer => e
De la mot 1-le, on supprime à la position 1
De la parole 2-jeudi, on élimine à la position 3
De la parole 2-jeudi, on élimine à la position 5
De la parole 3-a, on élimine à la position 3
De le mot 3-a, on supprime à la position 5
De la parole 4-avantages, on élimine à la position 2
De la palabra 6-interessants, on enlève à la position 4
De la parole 6-intéressants, on élimine à la position 6
De la parole 6-intéressants, on élimine à la position 11
De le mot 7-que, on élimine à la position 3
De la palabra 11-tienen, se elimina en la posición 3
De le mot 11-ils ont, on élimine à la position 5
Liste finale
["l","juvs","tin","avantages","très","intéressants","que","d'autres","jours"]
["non","étain"]
Caractères éliminés 12
Remarque : Utiliser enumerate.

Exercice 4.4. Équipes

Le programme comportera deux listes préchargées de noms, chaque nom représentant un


joueur d'une équipe
lisBALON_1 = ["JUAN","ANA","LUZ","TOM","RAÚL","SARA","LUIS","BO","RAFA"]
lisBALON_2 = ["PAM","CRUZ","ARON","GON","TATO","LOU", "JAVE", "TORO", "RAFA",
"CARRIE", "CARLA", "JUAN"]

14
Cahier d'exercices

Le programme devra :

• Lister tous les joueurs des deux équipes qui ont les voyelles suivantes
au nom : "AEI".
• Lister tous les joueurs des deux équipes qui ont deux voyelles ou plus
égales dans le nom.
• Afficher les joueurs avec des noms répétés.
Ejemplo del resultado:

['JUAN', 'ANA', 'LUZ', 'TOM', 'RAÚL', 'SARA', 'LUIS', 'BO', 'RAFA', 'PAM',
'CRUZ', 'ARON', 'GON', 'TATO', 'LOU', 'JAVE', 'TORO', 'RAFA', 'CARRIE',
'CARLA', 'JUAN']
Vocales A E I
['JUAN', 'ANA', 'RAÚL', 'SARA', 'LUIS', 'RAFA', 'PAM', 'ARON', 'TATO', 'JAVE',
'RAFA', 'CARRIE', 'CARLA', 'JUAN']
Vocales Égales
['ANA', 'SARA', 'RAFA', 'TORO', 'RAFA', 'CARLA']
Nombres Répétés
["JUAN","RAFA"]

Ejercicio 4.5. Cálculos con tuplas


Le programme demandera à l'utilisateur combien de nombres il souhaite introduire dans le tuple. Tous seront demandés.
les chiffres et sont stockés dans le tuple. Le maximum, le minimum, la différence entre seront imprimés
maximum et minimum et la moyenne de tous les nombres donnés.

Exemple du résultat :

Total éléments 6
Número = 3
Número = 6
Número = 9
Número = 34
Número = 2
Número = 9
(3, 6, 9, 34, 2, 9) Máximo 34 mínimo 2 máximo-mínimo 32 media 10.5

Exercice 4.6. Maximum locaux d'une fonction

El usuario introducirá todos los resultados arrojados por una función cualquiera y el programa
détectera tous les maxima locaux et les comptera. Une fois que cela sera terminé
introduire toutes les données. Le programme affichera les calculs suivants :

• Le total de toutes les données saisies.


• La moyenne de toutes les données saisies.
• La somme de toutes les données divisée par le nombre de maxima trouvés.
• Éviter les erreurs potentielles de saisie de données et de division par zéro.

15
Cahier d'exercices

Ejemplo del resultado:

Nombre de points de la fonction == > 10


valor de la función en el punto 1 => 2.0
valor de la función en el punto 2 => 1.5
valeur de la fonction au point 3 => 3.5
valeur de la fonction au point 4 => 2.1
La valeur 3.5 est un maximum local
valeur de la fonction au point 5 => 6,7
valeur de la fonction au point 6 => 5.8
La valeur 6.7 est un maximum local
valeur de la fonction au point 7 => 0,1
valeur de la fonction au point 8 => 4.7
valor de la función en el punto 9 => 2.0
La valeur 4.7 est un maximum local
valor de la función en el punto 10 => 3.5

Suma totale 31,900000000000002, Maxima locali 3,


Promedio 3.1900000000000004, Suma/máximos 10.633333333333335

Exercice 4.7. Générateur de mots de passe

Écrire un programme en Python qui génère des mots de passe de 8 caractères de manière aléatoire.
caractères doivent être des lettres majuscules A-Z, 2 caractères doivent être des lettres minuscules a-z, 2 caractères
ils doivent être des chiffres 0-9 et les deux derniers caractères spéciaux (!, ?, *, #,=,-,),ç). Vérifiez le code
ASCII.

Contraseña: MBpd55*-
.

Exercice 4.8. Créer des acronymes

L'utilisateur est invité à fournir une phrase et l'acronyme de celle-ci est imprimé (les premières lettres de
chaque mot). Ne doivent pas être inclus (de, del, et).

Association des Consommateurs et Utilisateurs d'Espagne


ACUE

Exercice 4.9. Vérifier un mot de passe


Vérifier si l'utilisateur saisit un mot de passe correct. Le mot de passe est considéré comme correct
s'il a au moins 8 caractères, des lettres majuscules, des lettres minuscules, des chiffres et sans espaces.
Dans le cas contraire, vous devez indiquer une erreur.

Exemple du résultat :

Introduisez le mot de passe : JJPR5


Mot de passe invalide.
Introduisez le mot de passe : Jjrt5iklu
Mot de passe valide.
Enoncés : Travail complémentaire

16
Cahier d'exercices

Enoncés : Travail complémentaire

Complémentaire 4.1. Générer des nombres triangulaires

Calculer tous les nombres triangulaires de 1 jusqu'à la valeur indiquée par l'utilisateur. La formule
Pour calculer un nombre triangulaire, il faut :

( + 1)
=
2
Exemple du résultat :

Valor de N ==>10
T 1 = 1.0
T 2 = 3.0
T 3 = 6.0
T 4 = 10,0
T 5 = 15,0
T 6 = 21,0
T 7 = 28.0
T 8 = 36.0
T 9 = 45.0
T 10 = 55.0

Complémentaire 4.2. Imprimer les fiches du jeu de domino

Le programme doit afficher à l'écran une représentation des pièces d'un domino
standard.

Exemple du résultat :

0|0 ; 0|* ; 0|** ; 0|*** ; 0|**** ; 0|***** ; 0|****** ;


*|* ; *|** ; *|*** ; *|**** ; *|***** ; *|****** ;
**|** ; **|*** ; **|**** ; **|***** ; **|****** ;
***|*** ; ***|**** ; ***|***** ; ***|****** ;
****|**** ; ****|***** ; ****|****** ;
*****|***** ; *****|****** ;
******|****** ;

Complémentaire 4.3. Convertir un nombre binaire en décimal


Le programme demandera un total de 10 valeurs à l'utilisateur qui devront être des uns ou des zéros. Ces valeurs
représenteront un nombre binaire. Le programme signalera une erreur en cas de valeur
introducido no sea correcto y seguirá pidiendo números. El número que se ha introducido
incorrectement, cela sera interprété dans le programme comme 0. La conversion s'affichera à l'écran
un décimal correspondant et le nombre binaire complet saisi par l'utilisateur.

17
Cahier d'exercices

Exemple du résultat :

Donne-moi un nombre binaire 9 = 0


Donne-moi un nombre binaire 8 = 0
Donnez-moi un nombre binaire 7 = 1
Donne un nombre binaire 6 = a
Le numéro n'est pas correct
Donne un nombre binaire 5 = 0
Donnez un nombre binaire 4 = 1
Donne-moi un nombre binaire 3 = 1
Donne moi un nombre binaire 2 = 0
Donnez-moi un numéro binaire 1 = 1
Donne-moi un numéro binaire 0 = 1
El resultado de la conversión del número 0010011011 es 155
Note : Ne pas utiliser la fonction bin.

Complémentaire 4.4. Prévisions de ventes. Moyenne mobile pondérée


Il est possible de prédire l'avenir des ventes d'un bien sur la base de données historiques et d'estimations.
de marketing, etc., par l'utilisation de plusieurs techniques, par exemple, la moyenne mobile
pondéré, où un facteur de pondération est attribué à chaque donnée de la moyenne (sa somme doit
Il est habituel d'appliquer le facteur de pondération (pourcentage) le plus élevé au chiffre le plus récent.
La formule est :

Où :

• ^: Moyenne des ventes en unités pendant la période t


• Cje: Facteur de pondération
• Xt-1: Ventes ou demandes réelles en unités des périodes précédentes à t
• n: Nombre de données
Faites un programme qui :

• Demandez à l'utilisateur le nombre de données nécessaires pour la prévision. n.


• Demandez les données (Xt-1) et le facteur de pondération (Ci) pour chaque donnée.

• Vérifiez que la somme des facteurs de pondération des données soit égale à
100 %. Si cela n'est pas respecté, un message d'erreur est envoyé dès que cela est détecté.
Sino, le pronostic demandé est imprimé.
• Contrôlez les éventuelles erreurs (saisie de données).

Exemple d'un entrepôt :

L'entrepôt a déterminé que la meilleure prévision est déterminée avec 4 données et


en utilisant les facteurs de pondération suivants (40 %, 30 %, 20 % et 10 %). Déterminer le
prévision pour le mois 5. Les données sont détaillées dans le tableau suivant :

18
Cahier d'exercices

Période Ventes (unités) Ponderación = (100000 *0,1) + (90000*0,2) + (105000*0,3)


+
Mes 1 100000 10%
(95000 *0,4)
Mes 2 90000 20%

Mes 3 105000 30% Mes 5 = 97500 unités

Mes 4 95000 40%

Exemple du résultat :

Donne-moi n ==> 4
ventas del mes 1: 100000
La pondération de 100000,0 est 10
ventas del mes 2: 90000
La pondération de 90000.0 est 20
ventas del mes 3: 105000
la pondération de 105000.0 est 30
ventas del mes 4: 95000
la pondération de 95000.0 est 40
La prévision est 97500,0

Complémentaire 4.5. Créer une liste

Écrire un programme en Python qui demande une chaîne au clavier, introduire les caractères dans
une liste sans caractères répétés et imprimez la liste finale, c'est-à-dire les caractères sans répétition.
Preguntar repetidamente al usuario cuál carácter quiere eliminar de la lista, eliminarlo y mostrar
la nouvelle liste. Le programme s'arrêtera lorsque l'utilisateur introduira le caractère "*".

Exemple du résultat :

Donnez-moi une chaîne : ceci est le test d'une chaîne quelconque pour voir comment
travaille le programme
['e', 's', 't', 'o', ' ', 'l', 'a', 'p', 'r', 'u', 'b', 'd', 'n', 'c', 'q']
'i', 'v', 'm', 'j', 'g']
Caractère à supprimer ou (*): ou
est labr dnc qi
["v","m","j","g"]
Caractère à supprimer ou (*): g
est la prudence
["v","m","j"]
Caractère à supprimer ou (*): *
es: [‘MMM’, 12, 23, 45, 98]

Complémentaire 4.6. Vérifier NIF

Vérifier si le NIF saisi par un utilisateur est correct. Un NIF est correct s'il a 8 chiffres.
et lettre. La dernière lettre du DNI est calculée à partir de ses numéros, le nombre est divisé par 23 et
le reste est un nombre entre 0 et 22. La lettre qui correspond à chaque numéro, tu l'as dans cette
tabla:

19
Cahier d'exercices

Complémentaire 4.7. Obtenir une chaîne

Le programme a ces variables :

cadena_1="aBcdE"

cadena_2="1465"
Faites en sorte qu'en quelques phrases, le résultat que vous voyez à l'écran soit :

• aBcdEaBcdEaBcdEaBcdE14691469

Complémentaire 4.8. Types de caractères

El usuario introducirá un texto, y el programa nos mostrará la cantidad de espacios en blanco


que a, la quantité de lettres en majuscules, quantité de lettres en minuscules, quantité de
nombres et d'autres types de caractères que contient le texte saisi.

Exemple de résultat :

Calculez le nombre premier de 5


Nombre d'espaces : 5
Quantité de chiffres : 1
Nombre de lettres en majuscules : 1
Quantité de lettres minuscules, 21
Autres caractères : 0

Complementario 4.9. Lista de palabras


Demandez à l'utilisateur sa phrase et stockez-la dans une variable string. Séparez les mots en utilisant
comme référence les espaces entre elles (ne pas utiliser Split). Rechercher dans la liste le mot qui a
plus de caractères et la supprimer. Trier la liste et l'imprimer à l'envers.

Exemple du résultat :

Donnez-moi une phrase : cette phrase est aléatoire et contient plusieurs mots
["cette","phrase","est","aléatoire","et","contient","plusieurs","mots"]
elemento aleatoria: lista ['esta', 'frase', 'es', 'y', 'contiene', 'varias',
'palabras']
['contiene', 'es', 'esta', 'frase', 'palabras', 'varias', 'y']
["y","plusieurs","mots","phrase","cette","est","contient"]

20
Cuaderno de Ejercicios

Exercice 5. Matrices. Liste de listes

Objectif

• Créer, modifier et parcourir des matrices.


• Connaître les principales fonctions des matrices : len, append, insert et pop.
• Implémenter des algorithmes typiques de matrices.

Enunciados: Trabajo en clase

Ejercicio 6.1. Tuberías

On note les données de collecte de 5 canalisations d'eau pendant les sept jours de la semaine.
une des machines de l'usine. une matrice de deux sera créée dans le programme principal
dimensiones del tipo de datos float de 5x7 que contenga ceros en todas sus posiciones.
Il faut:

• Remplir la matrice avec des nombres aléatoires de type flottant avec des valeurs depuis
[150,52 à 321,19]. Tous les éléments de la matrice sont arrondis pour qu'ils aient
seulement deux décimales.

• Créer une liste avec la somme des totaux des litres recueillis de chacune des
cinco tuberías.
• Crear una lista con suma de los totales de los litros recogidos de cada día.
• Rechercher la valeur maximale de collecte de toutes les données.
• Calculer combien de litres d'eau reçoit la machine.

Exercice 6.2. Calculs et recherches sur les matrices

Une entreprise de fabrication de réfrigérateurs possède plusieurs usines, dont nous avons la
informations suivantes :

• Ville où se trouve l'usine.


• Nombre d'unités fabriquées l'année dernière.
• Nombre d'unités défectueuses fabriquées l'année dernière.
• Coût par unité de chaque réfrigérateur fabriqué (en euros).

Ville Production totale Défectueuses Coste unitario (€)


Vigo 731 23 3498,54
Lugo 238 12 3823,35
La Corogne 801 26 3324,12
Santiago 510 17 3325,89

Réaliser ce qui suit :

• Créer une matrice avec des données fixes contenant dans chaque ligne les informations d'un
usine, dans l'ordre indiqué dans la liste précédente.

21
Cahier d'exercices

• Ajouter le code nécessaire pour pouvoir ajouter des informations sur plus d'usines dans le
matrice.
• Calculer la production totale conjointe.
• Calculer la production totale conjointe sans erreurs.
• Mostrar una lista con las ciudades cuya producción total supera las 500 unidades.
• Mostrar cuál es la fábrica con mayor producción total.
• Afficher l'usine avec le plus faible pourcentage d'unités défectueuses. Afficher
aussi le pourcentage arrondi à deux décimales (utiliser la fonction round(valeur,
núm_decimales).
• Modifier le point 2 pour éviter d'introduire des villes répétées. Dans ces cas-là, on
il notifiera l'erreur à l'utilisateur et le reste des informations pour cette ville ne sera pas demandé.

Résultat avec les données du tableau précédent :

Máxima producción: A Coruña->801


Production totale conjointe : 2280
Production totale conjointe sans erreurs : 2202
Moins de % d'erreurs : Vigo -> 3.15%
Ciudades con producción >=500: ['Vigo', 'A Coruña', 'Santiago']

Enoncés : Travail complémentaire

Complémentaire 6.1. Somme de matrices

Écrire deux matrices de mêmes dimensions et calculer la matrice résultante de leur somme.

Complémentaire 6.2. Produit de matrices

Écrire deux matrices et calculer la matrice résultante de leur produit. Il faut tenir compte que
le nombre de colonnes de la première matrice doit correspondre au nombre de lignes de la deuxième.

Complémentaire 6.3.

• Opération élémentaire : multiplier une ligne par un scalaire. Étant donné un scalaire et un
numéro de ligne, multiplier les valeurs de cette dernière par l'échelle.

4 1 2 4 1 2
3 3 2 → 9 1 9 63→
1 5 1 1 5 1
• Opération élémentaire : somme de lignes. Étant données deux numéros de ligne, additionner à la seconde.
les valeurs de la première.

4 1 2 4 1 2
3 3 2 → 0 3 3 2→
2
1 5 1 5 6 3

• Opération élémentaire : échange de deux lignes. Donnés deux numéros de ligne,


échanger les valeurs des deux.

22
Cahier d'exercices

4 1 2 1 5 1
3 3 2 → 3 3 0 22→
1 5 1 4 1 2

• En utilisant les opérations élémentaires précédentes, calculer le déterminant par le


méthode de Gauss.
En[Link] salut
un rappel de comment le faire.

23
Cahier d'exercices

Ejercicio 6. Funciones y Módulos

Objectifs

• Identifier les fonctions les plus appropriées pour diviser un programme.


• Mettre en œuvre les fonctions identifiées de manière optimale.
• Déterminer les paramètres que la fonction doit recevoir pour atteindre son objectif
et les valeurs de retour en cas de besoin.
• Comprendre et savoir utiliser les variables dans les programmes : globales et locales.
• Importer un module personnel.
• Créer un exécutable en utilisant PyInstaller.

Enoncés : Travail en classe

Ejercicio 5.1. Calcular segundos totales

Calculez les secondes d'une période de temps exprimée en heures:minutes:secondes. Dans les
Heures : un intervalle de [0-23] sera admis, en minutes et secondes [0-59]. Pour cela :

• Créez une fonction qui demande à l'utilisateur la durée (heures, minutes,


secondes). Cette fonction recevra comme paramètre d'entrée le message qui lui
Montre à l'utilisateur et la plage valide de chaque valeur. La fonction demandera la donnée
désiré jusqu'à ce que je respecte la gamme.
• Créez une fonction qui reçoit cette période de temps et calcule les secondes.
• Le programme principal appellera les deux fonctions mentionnées ci-dessus, le
la première sera appelée plus d'une fois pour obtenir toutes les données, et la seconde
calculera le nombre de secondes totales. Le résultat sera affiché à l'écran dans le
programme principal.
Exemple du résultat :

Programme de conversion de secondes


Heures 25
Heures 25
Heures 24
Heures 23
Minutes 60
Minutes 59
Segundos 0
Les secondes totales sont 86340

Ejercicio 5.2. Calcular el tiempo total de uso de bicicleta eléctrica y el coste

Dans le service de location de vélos "Le promenade" de l'Université La Grande, une fois que le
l'utilisateur qui s'inscrit au service doit indiquer à la fin du mois le nombre de fois que
a utilisé le vélo sur le campus et la durée en heures:minutes:secondes qu'il a mise à
chaque parcours. Le programme calculera le nombre total de secondes par parcours et les
multiplicará por el coste. El coste es de 0,001 €. Desarrolle un programa que:

• Demandez à l'utilisateur combien de fois il a utilisé le vélo au cours du mois.

24
Cahier d'exercices

• Pour chaque fois que vous l'avez utilisé, obtenez la période de temps
heures:minutes:secondes. Utilisez les routines créées dans l'exercice précédent.
• Sauvegardez les données dans une liste. Créez une fonction qui reçoit les secondes de chaque
période de temps et les ai enregistrés dans la liste.

• Créez une fonction qui parcourt la liste et stocke dans une chaîne les données de
secondes et le coût de chaque parcours, ainsi que les totaux accumulés tant de
secondes comme des coûts.
• Montrez le résultat dans le programme principal. C'est ici qu'il sera déclaré.
liste et le coût par seconde.
Exemple du résultat :

Programme convertisseur de secondes


Nombre de fois que 3 a été utilisé
0 Heures 1
0 Minutes 1
0 Secondes 1
1 Heure 2
1 Minutos 2
1 Segundos 2
2 Heures 3
2 Minutes 3
2 secondes 3
0 secondes = 3661 = 3.661
1 segundos = 7322 = 7.322
2 secondes = 10983 = 10,983

Segundos Total 21966 = 21.966

Exercice 5.3. Opérations avec des points (x,y)

L'utilisateur saisira deux points quelconques (x1,y1) et (x2,y2) et pourra effectuer différentes
opérations : distance et point milieu.

Pour cela :

• Une fonction sera créée pour demander un point et le stocker dans une variable de type
tuple.
• Créer une fonction qui reçoit les deux points comme paramètre d'entrée et renvoie
la distance entre les deux.
• Fonction qui calcule le point milieu des deux points d'entrée.
• Fonction qui imprime les différentes options du programme (menu) à l'écran.
• Función que lea la opción escogida por el usuario y compruebe que está en el rango
désiré, sinon elle continuera à la demander (vous pouvez réutiliser la fonction du
exercice 1).
• Dans le programme principal, assemblez les différents appels aux fonctions pour
obtenir un programme fonctionnel.

25
Cahier d'exercices

Exemple du résultat :

Travailler avec deux points


1. Demander des points
2. Point médian
3. Distancia
4. Sortir
Opción: 1
Donne-moi X 4
Dame Y 1
Donne-moi X 5
Dame Y 7
(4,1)(5,7)
Travailler avec deux points
1. Demander des points
2. Point médian
3. Distance
4. Sortir
Option : 2
Le point médian est => ( 4.5 , 4.0 )
Remarque : Vous pouvez mettre en œuvre d'autres routines pour obtenir le même résultat.

Exercice 5.4. Trier trois nombres

Trois nombres saisis par l'utilisateur seront triés par ordre croissant. Cela sera implémenté.
une fonction qui reçoit comme paramètre seulement deux nombres et les retourne triés. Le reste de
Les instructions seront dans le programme principal.

Exemple du résultat :

donne-moi un numéro : 5
dame un número: 3
donne-moi un numéro : 1
ordonnés ==> 1 3 5

Exercice 5.5. Réalisez l'exécutable du programme de l'exercice 4

Exercice 5.6. Créez un module


Créez un module avec la fonction demanderVal. Cette fonction reçoit une chaîne, une valeur minimale
et un maximum. La fonction vérifie que la chaîne peut être convertie en numérique et que cela
encuentra dentro del rango estipulado. Esta función regresa dos valores true o false (si valor es
approprié ou non) et la valeur numérique correspondante. Utilisez ce module dans les exercices
l'importer.

Enoncés : Travail complémentaire

Complementario 5.1. Calcular el tiempo total de uso de bicicleta eléctrica

Dans l'exercice 2, restructurez le programme pour stocker des tuples contenant les trois données.
de la période de temps.

De plus :

• Implémenter une fonction qui parcourt la liste de période et crée une autre liste
stockant les secondes totales de durée de la période.

26
Cahier d'exercices

• Créer une fonction qui trie les deux listes par ordre croissant.
• Créer une fonction qui additionne tous les éléments de la liste des secondes totales.
• Afficher à l'écran, la liste où est stocké la période de temps, les
secondes de chaque période et le total des secondes.

Exemple du résultat :

Programme convertisseur de secondes


Nombre de fois que 3 a été utilisé
0 heures 2
0 Minutes 20
0 Secondes 15
1 heures 1
1 Minute 12
1 Segundos 33
2 Heures 1
2 Minutes 9
2 secondes 45
(1, 9, 45), 4185
((1, 12, 33), 4353)
((2, 20, 15), 8415)
Total de secondes 16953
Remarque. Les fonctions sort, zip, etc. peuvent être utilisées.

Complémentaire 5.2. Travailler avec des points

Utilisez le programme développé dans l'exercice 4. Demandez à l'utilisateur un nombre de points


quels que ce soit. Gardez tous les points donnés dans une liste. Augmentez les options suivantes à
menú:

• Calculer les distances entre chaque paire de points donnée consécutivement.


• Calculer le point médian entre chaque paire de points consécutifs.
• Afficher la plus grande distance.

Exemple du résultat :

Travailler avec deux points


Demander des points
2. Montrer
3. Sortir
Option : 2
((2, 2), 0, 0)
((4, 5), 3.605551275463989, (3.0, 3.5))
((7, 5), 3.0, (5.5, 5.0))
((9, 12), 7.280109889280518, (8.0, 8.5))
La plus grande distance est 7.280109889280518

Complémentaire 5.3. Trois en ligne

As-tu le code complet du jeu Tic Tac Toe ? Copie-le et vérifie qu'il fonctionne.
Documentez les paramètres d'entrée que chaque fonction du jeu reçoit, et les
valeurs qu'elle renvoie, résume également brièvement ce que fait chacune d'elles. De plus,
réponds ce qui suit :

• Détaille ce que fait la fonction appelée : computer_move().


• Comment décide-t-on quel caractère représente l'utilisateur et lequel représente l'ordinateur (quelle fonction).

27
Cahier d'exercices

• Que faut-il faire pour indiquer que le tirage du joueur est valide (quelles fonctions s'en chargent)
et comment ils le font).

"""
Trois en ligne
"""
importer aléatoire
tableau=[i pour i dans la plage(0,9)]
player, computer = '',''
#Coin, Centre et autres
moves=((1,7,3,9),(5,),(2,4,6,8))
# Combinaisons gagnantes
winners=((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))
# Tableau
tab=plage(1,10)
def afficher_plateau():
x=1
pour i dans le tableau :
end = ' | '
si x%3 == 0 :
end = ' \n'
si i != 1 :
fin+='---------\n'
char=' '
si je dans ('X', 'O'):
char=i
x+=1
print(char, fin=end)
def choisir_personnage():
chars=('X','O')
si [Link](0,1) == 0 :
return chars[::-1]
retourner des caractères
def peut_deplacer(brd, joueur, coup):
si déplacer dans l'onglet et brd[deplacer-1] == deplacer-1 :
retourner True
retourner Faux
def peut_gagner(brd, joueur, mouvement):
places=[]
x=0
pour i dans brd :
si je == joueur : [Link](x);
x+=1
win=True
pour tup dans gagnants :
win=True
pour ix dans tup :
si brd[ix] != joueur :
win=False
pause

si gagner == Vrai :
pause
retourner gagner
def faire_coup(brd, joueur, coup, annuler=False):
si peut_deplacer(brd, joueur, mouvement) :
brd[move-1] = player
win=can_win(brd, player, move)
si annuler :
brd[move-1] = move-1
(Vrai, gagner)
retourner (Faux, Faux)

28
Cahier d'exercices

def mouvement_ordinateur() :
move=-1
pour i dans la plage(1,10):
si faire_coup(tableau, ordinateur, i, Vrai)[1]:
move=i
pause
si déplacement == -1 :
pour i dans la plage(1,10):
si faire_coup(plateau, joueur, i, Vrai)[1]:
move=i
pause
si deplacement == -1 :
pour tup dans mouvements :
pour mv dans tup :
si déplacement == -1 et peut_déplacer(tableau, ordinateur, mv) :
move=mv
pause
retourner faire_un_coup(tableau, ordinateur, coup)
def espace_existe() :
return [Link]('X') + [Link]('O') != 9
joueur, ordinateur = choisir_personnage()
print('Le joueur est [%s] et l'ordinateur est [%s]' % (player, computer))
result='%%% Empate ! %%%'
tant que l'espace_existe() :
imprimer_plateau()
print('#Tira ! [1-9] : ', end='')
deplacer = int(input())
déplacé, gagné = faire_déplacement(tableau, joueur, mouvement)
si pas déplacé :
print(' >> Numéro incorrect ! Essayez encore !')
continuer
si gagné :
result='*** Felicidades ! GANASTE ! ***'
pause
elif computer_move()[1]:
result='=== PERDISTE! =='
pause;
imprimer_plateau()
imprimer(résultat)

29
Cahier d'exercices

Exercice 7. Persistance : Fichiers

Objectif

• Création et manipulation de données dans un fichier.


• Création et manipulation de données avec sqlite 3.

Enunciados: Trabajo en clase

Ejercicio 7.1. Fichero

Supposons que nous disposons d'un fichier nommé Donné[Link] dans lequel sont enregistrées les
données d'un laboratoire depuis 8h00 du matin jusqu'à 20h00 en une journée, les données
ils sont pris à l'heure précise et à la demi-heure de manière ininterrompue. Les données qui sont recueillies
son:

• Heure au format heures et minutes en tant que nombres entiers.


• Pression atmosphérique en millibars sous forme de nombre entier sans décimales.
• Température en degrés Celsius sous forme de nombre avec 1 décimale.
• Humidité relative en pourcentage sous forme d'un nombre à 2 décimales.
• Nombre de personnes dans le laboratoire.
• Comme exemple d'une donnée du fichier, cela pourrait être :

8;30;976;17.1;68.35;9

À partir des données du fichier précédent, on souhaite une application informatique qui affiche :

• Quelle a été la moyenne de personnes dans le laboratoire ?


• Quel a été le nombre maximum de personnes dans le laboratoire ?
• À quelle heure a-t-on enregistré le plus grand nombre de personnes dans le laboratoire ?
• Quelle a été la température la plus basse enregistrée dans le laboratoire ?
• Quelle a été la température moyenne dans le laboratoire ?

A continuación, se muestra el código de la aplicación que cumple las funcionalidades


anteriorement décrites :
fichero=open("c:/tmp/[Link]" ,"r")
totalpersonas=0
contador=0
máximodepersonas=0
totaltemperatura=0
pour ligne dans fichier :
lista = [Link](";")
hora=liste[0]
minuto=liste[1]
presión=lista[2]
température=float(liste[3])
humidité=float(lista[4])
personas=float(lista[5])
totalpersonas+=float(personas)
si float(personas)>maximodepersonas:
máximodepersonas=float(personas)

30
Cahier d'exercices

horamáximodepersonas=hora + ":" + minuto


si contador==0:
mínimotemperatura=float(temperatura)
si float(temperatura)<mínimotemperatura:
mínimotemperatura=float(temperatura)
totaltemperatura+=float(temperatura)
compteur+=1
print("Moyenne de personnes dans le laboratoire : " + str(totalpersonas/contador))
print("Nombre maximum de personnes dans le laboratoire : " + str(maximumpersons))
+ " à les " + str(horamáximodepersonas)
print("Température la plus basse dans le laboratoire : " + str(mintempérature))
Média de température dans le laboratoire :
str(totaltemperatura/contador))
[Link]()

On demande de réaliser un programme qui :

• Veuillez demander le nom du fichier. Ensuite, demandez les données à enregistrer.


informations du type de l'exemple dans le fichier cité.
• Exécutez le programme de l'exemple sur le fichier que nous avons enregistré et observez
donne les bons résultats.
• Modifiez le programme du point 1 pour qu'il demande à l'utilisateur s'il souhaite créer un
fichier de données nouveau ou ajouter des données à un existant. S'assurer de ne pas supprimer
par erreur un existant et de celui qui existe à celui que l'on veut ajouter. Ensuite,
réexécutez le programme exemple et observez si les résultats obtenus sont
corrects.
• Résoudre en utilisant des fonctions.

Pour connaître le répertoire de travail actuel, nous pouvons inclure :

importer [Link]
ruta=[Link]()
Pour vérifier si le fichier existe :
si [Link](fichier) :

print("le fichier existe")

Enoncés : Travail complémentaire

Complémentaire 7.1. Réaliser les exercices proposés dans le Cahier d'exercices résolus
correspondant à la partie fichiers.

31
Cahier d'exercices

Ejercicio 8. tkinter. GUI Interfaces Gráficas. Parte I. Introducción

Objectifs :

• Gestion et positionnement de certains widgets.


• Utilisation des attributs les plus courants.

Introduction
Python implémente des interfaces graphiques utilisateur (GUI Interfaces Graphiques Utilisateur) en utilisant
bibliothèques, l'une des plus utilisées est la bibliothèque tkinter qui est incluse dans Python comme un
paquet standard, donc il n'est pas nécessaire d'installer quoi que ce soit pour l'utiliser. tkinter est l'acronyme
pour tk interface et permet de générer des interfaces de manière rapide et simple.

Pasos para crear una aplicación con tkinter:

1. Importer le module tkinter


2. Créer la fenêtre principale
3. Ajouter les widgets nécessaires à la fenêtre
4. Inclure les déclencheurs dans les widgets (répondre aux événements)

En esta ejercicio nos centraremos en los tres primeros pasos, los eventos y cómo responder a
nous le verrons dans la deuxième partie.

Le module tkinter s'importe de la même manière que les autres modules en utilisant l'instruction import.

de tkinter import *
importer tkinter comme tk

Les deux méthodes précédentes font la même chose, mais il est très courant de voir la seconde où l'on
renommer tkinter en tk.
Pour initialiser tkinter, nous devons créer la fenêtre principale (celle qui contient tous les widgets)
et maintenir le programme en cours d'exécution. Les deux méthodes que nous devons inclure sont :

1. Tk(): crée la fenêtre principale, c'est la surface (ou conteneur) sur laquelle vont se déployer.

placer les composants (widgets).


• title(): título de la ventana
• géométrie("WxH±X±Y"): dimensions et décalage
• iconbitmap("[Link]"): changer l'icône
• quitter termine la boucle principale

• destroy() : ferme la fenêtre


2. boucleprincipale(): s'utilise pour exécuter l'application. C'est une boucle infinie qui reçoit et

répondre aux événements tant que la fenêtre principale n'est pas fermée.

32
Cahier d'exercices

Dans la troisième étape, nous devons décider quels widgets nous voulons inclure dans notre
fenêtre, et leur donner l'apparence et l'emplacement que nous souhaitons dans celle-ci. Chaque widget a
attributs propres.

Widgets
Ce sont de petits programmes qui sont utilisés pour ajouter des fonctions, simplifier ou automatiser.
ces actions qui sont effectuées fréquemment. Pour donner du contenu et de la forme à notre
dans la fenêtre, nous incluons des widgets. Nous listerons les widgets que nous utiliserons dans l'exercice et certains de
ses attributs.

Étiquette : se traduit par étiquette et fait référence à une boîte où l'on peut afficher du texte ou
images. L'image ou le code affiché peut être mis à jour pendant l'exécution.

lbl=Label(ventana, opción=valor)
image, compound

permet à la fois d'afficher des informations à l'utilisateur et de les obtenir.

txt=Entry(ventana, opción=valor)

Les boutons peuvent contenir du texte ou des images et peuvent être associés à des fonctions ou des méthodes. En faisant
Cliquez dessus, tkinter se charge d'appeler automatiquement la fonction associée.

btn=Button(ventana, opción=valor)
image, command, cursor, compound

RadioButton : Permet à l'utilisateur de choisir une seule option parmi l'ensemble des options proposées.
On peut associer une méthode qui sera exécutée lorsque l'utilisateur choisit l'option. Chaque groupe
les boutons radio doivent être associés à la même variable, lorsqu'on en sélectionne un,
la valeur de la variable associée change.

opt= BoutonRadio(ventana, variable=v, valeur=1,… option=valeur)


variable: variable de control a la que está asociado, value: valor por defecto si es seleccionado

CheckButton: Seleccionar una o múltiples opciones del conjunto propuesto. Tiene dos valores
possibles : sélectionné et non sélectionné.

chk = CheckButton(ventana, variable=v, opción=valor)


variable: variable de control a la que está asociado, title, command

Le cadre : agit comme un conteneur de widgets pour créer un regroupement logique.

33
Cuaderno de Ejercicios

fr=Frame(ventana, opción=valor)
title, command

Classe PhotoImage : cette classe est utilisée pour afficher des images dans des widgets, tels que des étiquettes,
boutons, toile et type de texte. Travaille avec GIF et PGM/PPM.

imagen = PhotoImage(fichier=fichero)

Attributs communs qui s'appliquent à presque tous les widgets

• bd : largeur du bode.
• bg: color de fondo.
• appel d'une fonction.
• police : fonte du texte. Ce que nous pouvons indiquer sur la police est :
ofamily: nombre: Arial, Courier, Comic Sans MS, Fixedsys, MS Sans Serif,
MS Serif, Symbole, Système, Times et Verdana.
osize: tamaño
oweight: NORMAL o BOLD
oslant: NORMAL o ITALIC
ounderline: 1(subrayar) o 0(no subrayar)
ooverstrike: 1(tachar) o 0 (no tachar)
• fg : couleur du texte
• image: image que veut être affichée.
• largeur : établir la largeur.
• height: establecer alto.
• texte qui montre l'étiquette
• justifier : justifie le texte. Accepte les paramètres suivants : GAUCHE, DROITE et CENTRE.
• composé : utiliser en même temps du texte et des images : BAS, GAUCHE, DROITE et
Haut.
• pady, padx, ipady, ipadx : spécifient (en pixels) les marges externes et internes
d'un élément.

Configurer

On peut définir l'aspect des widgets depuis leur instanciation ou en utilisant configure pour
changer la valeur d'un ou plusieurs attributs du widget.

[Link](option=valeur)

34
Cahier d'exercices

Placer les widgets dans la fenêtre


Tkinter dispose de trois classes pour gérer la position des widgets. Nous nous concentrerons sur
les deux premières :
1. pack(fill=Y, expand=1): organise les widgets en blocs.
• remplir : pour que le widget occupe tout l'espace qui lui est attribué. Il peut s'étendre
en: X, Y y BOTH (ambas direcciones).
• indique qu'un espace supplémentaire soit attribué au widget, si l'extension a une valeur
différent de 0.
• side: Indica en qué lado del padre se despliega: TOP (por defecto), BOTTOM,
GAUCHE ou DROITE.
2. grille(): les widgets sont organisés comme dans un tableau divisé en rangées et en colonnes. Chaque
la cellule contient un widget qui est centré. On commence à la position 0 tant que
pour les lignes comme pour les colonnes.
•row: renglón.
•column: columna.
•sticky: para pegar el widget a alguno de los bordes: N, S, E, W (norte, sur, este y
ouest).
• columnspan : que le widget occupe plus d'une colonne.
• rowspan : que le widget occupe plus d'une ligne.
3. place() : les widgets sont placés aux positions spécifiques du programmeur.

Exemple 1. Début

Une fenêtre de dimensions spécifiques sera créée.


Nous importons le paquet
de tkinter importer Tk
#Nous créons une fenêtre
ventana = Tk()
#nous établissons le titre de la fenêtre
[Link]("Un programa diferente")
#Nous définissons la taille de la fenêtre
[Link]("400x400")
Nous montrons une icône dans la fenêtre
[Link]("[Link]")
#nous montrons la fenêtre
[Link]()

Résultat de l'exécution

Exemple 2. Inclure des widgets

Des widgets supplémentaires sont ajoutés à la fenêtre précédente. L'idée est de créer une interface comme celle que se
exemple. La méthode pack sera utilisée pour placer les widgets. Vous pouvez utiliser d'autres sources et
couleurs.

35
Cahier d'exercices

de tkinter import *
ventana = Tk()
[Link]("Un programa diferente")
[Link]("550x550")
[Link](bg="azur")
lblFicha = Label(ventana, text="Ficha Técnica", font=("Arial Bold",
20),bg="gris", fg="noir".pack()
lblPresenta = Label(ventana, text="Datos más importantes del personaje ",
font=("Arial Bold", 15), fg="red").pack()
imagen = PhotoImage(file="[Link]")
lblimagen = Label(ventana, image=imagen)
[Link]()
lblModelo = Label(ventana, text="Modelo", font=("Arial Bold", 10)).pack()
txtModelo = Entry(ventana,width=10).pack()
lblCarac = Label(ventana, text="Características", font=("Arial Bold",
10)).pack()
txtCarac = Entry(ventana,width=30).pack()
lblUni = Label(ventana, text="Unidades", font=("Arial Bold", 10)).pack()
txtUni = Entry(ventana,width=10).pack()
lblPrecio= Label(ventana, text="Precio", font=("Arial Bold", 10)).pack()
txtPrecio = Entry(ventana,width=10).pack()
btnAceptar = Button(ventana,text="Aceptar",width=10,fg="red").pack(side=RIGHT)
Quitter
commande=[Link]).pack(côté=DROIT)
[Link]()
ventana.détruire()

Résultat de l'exécution

Enoncés : Travail en classe

Exercice 8.1. Modifier

Changer l'interface de l'exemple 2 pour obtenir le résultat suivant, en utilisant une grille.

36
Cahier d'exercices

Énoncés : Travail complémentaire

Complémentaire 8.1. Agenda

Concevez votre propre interface pour stocker vos contacts. L'interface devra contenir ce qui suit
información: foto de la persona, nombre, apellidos, edad, sexo, teléfono, correo electrónico.
Vous pouvez utiliser grid ou pack pour placer les widgets.

37
Cahier d'exercices

Exercice 8. Interfaces Graphiques de Utilisateur. Partie II

Objectifs

• Utiliser des variables de contrôle.


• Invocation et mise en œuvre de fonctions
• Bosquet suivant l'orientation objet

Variables de contrôle
Ce sont des objets spéciaux qui sont associés à certains widgets (texte, bouton radio, case à cocher, etc.)
pour stocker ses valeurs et faciliter leur disponibilité dans d'autres parties du programme. Si le
la variable change, le widget lié change aussi et vice versa. Tkinter a quatre types de
variables et disposent de trois méthodes : set(), get() et trace. La première fixe la valeur, le
le second consulte et le troisième surveille les changements des variables. Les types de variables
fils

• BooleanVar(). Vrai ou Faux.


• StringVar(). Initialise à "".
• IntVar(). Initialise à 0.
• DoubleVar(). Initialise à 0.0

#Pour les déclarer : #Donner de la valeur aux variables #Récupérer la valeur


entero = IntVar() [Link](100) print("Valeur de ", [Link]())
cadena = StringVar() [Link]("GFG") print("Valeur de ", [Link]())
booleano = BooleanVar() [Link](False) print("Valeur de ", [Link]())
flotante = DoubleVar() [Link](10.36) print("Valeur de ", [Link]())

La méthode trace() est utilisée pour "détecter" quand une variable est lue, change de valeur ou est
borrada:

[Link](type, function)
En tipo se indique ce que l'on veut vérifier : 'r' lecture de variable, 'w' écriture de variable et 'u'
borrado. Le deuxième argument indique la fonction qui sera appelée lorsque l'événement se produira
que celui-ci est en train de contrôler.

Exemple 1 : Ajout de plus de widgets, de variables de contrôle et de fonctions

Nous utiliserons l'application précédente (Partie I) et nous y ajouterons deux types de contrôles : bouton radio
vérifier le bouton, avec ses variables de contrôle respectives. Une fonction sera créée pour imprimer que
les options sont sélectionnées pour montrer comment le changement dans les sélections affecte les
variables de contrôle.
Le programme vérifiera que les unités ont une valeur de type entier, et que le prix a
un valor de tipo flotante. Se añadirá una etiqueta para desplegar el resultado de la multiplicación
des unités par le prix et une autre étiquette où les messages d'erreur seront affichés en cas
de les avoir. Chaque fois que la valeur des unités ou le prix est modifié par l'utilisateur, il se

38
Cahier d'exercices

il vérifiera d'abord que la valeur est du bon type, si c'est le cas, le total est calculé et affiché
dans l'étiquette correspondante, sinon, le message d'erreur s'affiche. Pour cela, on
Ils créeront également les variables de contrôle pour les widgets : prix et unités, on utilisera le
méthode trace pour savoir quand la valeur change.
Lorsque l'utilisateur appuie sur le bouton Accepter, il sera vérifié que les champs soient différents de
blanco (Nom, Caractéristiques et Unités), si l'un d'eux est vide, un message sera envoyé
erreur dans l'étiquette créée à cet effet, si elle a une valeur, elle sera affichée : PRÊT !!!. Le code serait :

Resultado de la ejecución

de tkinter import *
ventana = Tk()
[Link]("Un programa")
[Link]("560x390")

#Création des variables


withEntry=15
usado=IntVar()
control=BooleanVar()
baterias=BooleanVar()
unites = IntVar()
mensaje=StringVar()
total=DoubleVar()
precio=DoubleVar()
carac=StringVar()
modelo=StringVar()
colorN=0

#fonctions
def comprobar(*args): #déclaration de la fonction avec les paramètres par
défaut
essayer :
[Link](" ") #nettoyer l'étiquette du message
uni=int([Link]()) #Obtenir les valeurs des variables et
les convertir
prec=float([Link]()) #au type de donnée
[Link](round(float(prec*uni),2)) #Calculer le prix final et
rondir
sauf :
[Link]("ERREUR") #Afficher l'erreur
[Link](0) # Laisser 0 dans le total
#Muestra por que opciones está marcadas, cada vez que el usuario selecciona
une
def Imprimer():
print("Utilisé " + str([Link]())) #Indique quelle option est sélectionnée
print("Bateries " + str([Link]())) #Montre vrai ou faux si elles sont
marquées les batteries

39
Cahier d'exercices

print("Contrôle " + str([Link]()))#Affiche vrai ou faux s'ils sont


marquée l'option de contrôle
Si les champs ont des valeurs alors PRÊT et dans le cas contraire indiquez à compléter
def Accepter():
si [Link]()=="" ou [Link]()=="" ou [Link]()=="" ou
[Link]()=="" :
[Link]("MANQUE DE COMPLÉTER") #Afficher l'erreur
sinon :
[Link]("LISTO") #Afficher l'erreur

def CambiaColores(event):
colores=["azure","cadet blue","medium sea
green","goldenrod","salmon","maroon","PeachPuff3","SteelBlue3"]
colorM=len(couleurs)
couleurN globale
si colorN==colorM-1 :
colorN=0
sinon :
colorN+=1
[Link](bg=colores[colorN])

Mettez une valeur par défaut


[Link](1)
#Indiquer le suivi des variables
[Link]('w',comprobar)
[Link]('w',comprobar)

Nous créons l'étiquette et nous la mettons sur la fenêtre


lblFicha = Label(ventana, text="Ficha Técnica", font=("Arial Bold",
15),bg="prune3", fg="gris45")
lblPresenta = Label(ventana, text="Datos más importantes del personaje",
font=("Arial Bold", 15))
imagen = PhotoImage(file="[Link]")
lblimagen = Label(ventana, image=imagen,bg="grey")
lblNombre = Label(ventana, text="Nombre", font=("Arial Bold", 10),
fg="RoyalBlue2")
txtModelo = Entry(ventana,width=withEntry,fg="blue2",textvariable=modelo)
lblCarac = Label(ventana, text="Características", font=("Arial Bold", 10),
fg="BlueRoyale2")
txtCarac = Entry(ventana,width=withEntry,fg="blue2",textvariable=carac)
lblUni = Label(ventana, text="Unidades", font=("Arial Bold", 10),
fg="BleuRoyal2"
txtUni = Entrée(ventana, largeur=withEntry, fg="blue2", variableTexte=unidades)
lblPrecio= Label(ventana, text="Precio", font=("Arial Bold", 10),
fg="RoyalBlue2"
txtPrecio = Entry(ventana,width=withEntry,fg="blue2",textvariable=precio)
lblTotalE= Label(ventana, text="Total", font=("Arial Bold", 10),
fg="RoyalBlue2")
txtTotal= Entry(ventana, width=withEntry,text="",
fg="blue2",textvariable=total)
lblMensaje= Label(ventana, text="Precio", width=withEntry*2, font=("Arial
Gras", 10), textvariable=mensaje, fg="rouge", bg="rose")
#Nouvelles étiquettes pour les boutons radio
optNuevo=Radiobutton(ventana, text="Nuevo", font=("Arial Bold",
9),variable=usado,value=1,command=Imprimir)
optSemi=Radiobutton(ventana, text="Semi", font=("Arial Bold",
9),variable=usado,value=2,command=Imprimir)
optUsado=Radiobutton(ventana, text="Usado", font=("Arial Bold",
9),variable=usado,value=3, command=Imprimir)
#Nouvelles étiquettes pour les vérifications
chkControl=Checkbutton(ventana, text="Control", font=("Arial Bold",
9),variable=contrôle, commande=Imprimer)
chkBaterias=Checkbutton(ventana, text="Baterias", font=("Arial Bold",
9),variable=bateries, commande=Imprimer)
btnAceptar = Button(ventana,text="Aceptar",width=10,fg="red",command=Aceptar)
btnSalir = Button(ventana,text="Salir",width=10,fg="red",
command=[Link])

40
Cuaderno de Ejercicios

#nous montrons les étiquettes


[Link](row=0,column=1,columnspan=3,padx=3,pady=5,ipadx=3,ipady=3)
[Link](row=1,columnspan=4)
[Link](colonne=0, ligne=2, colonne_span=2, ligne_span=10, pad_x=10, pad_y=10, ipadx=3,
ipady=3)
[Link](row=3,column=2,sticky=W)
[Link](row=3,column=3,sticky=W)
[Link](row=4,column=2,sticky=W)
[Link](row=4,column=3,sticky=W)
[Link](row=5,column=2,sticky=W)
[Link](row=5,column=3,sticky=W)
[Link](row=6,column=2,sticky=W)
[Link](row=6,column=3,sticky=W)
[Link](row=7,column=2,sticky=W)
[Link](row=7, column=3, sticky=W)
[Link](row=8,column=2,columnspan=2,pady=5)
[Link](ligne=9,colonne=2,sticky=W)
[Link](row=9,column=3,sticky=W)
[Link](row=9,column=4,sticky=W)
[Link](row=10,column=2,sticky=W)
[Link](row=10,column=3,sticky=W)
[Link](row=11,column=2)
[Link](row=11,column=3)

[Link]('<Button-1>',CambiaColores)

[Link]()
ventana.détruire()

Enoncés : Travail en classe

Exercice 8.2. Encoder l'agenda

Tu codifieras le comportement souhaité dans l'agenda que tu as conçu dans l'exercice de


introducción.

• Chaque fois que le champ âge est modifié, vérifier que la nouvelle donnée est un type
de données entières sinon, envoyer un message d'erreur.
• Vérifiez que le numéro de téléphone doit avoir 9 caractères et que tous doivent être
séries numériques.
• Haz lo mismo con el campo correo electrónico, para indicar que el campo es
correct, il suffit qu'il ait le signe “@” et un point.
• Añade tres botones: Limpiar, Aceptar, Salir.
• Le bouton nettoyer blanchit tous les champs.
• Dans le bouton Accepter, vérifiez que tous les champs contiennent des informations.

Remarque : Utilisez le code que vous avez d'autres exercices

41
Cahier d'exercices

Exercice 8.3. Calculs de projectile

Un projectile tiré à une vitesse vo et à un angle a (radians) suivra une trajectoire


décrite par les formules suivantes, où t est le temps et g est la gravité :

x = vo*cos(a)*t

y = vo*sin(a)*t - 0.5*g*t**2

• Implémenter une application de fenêtres permettant à l'utilisateur de saisir les


paramètres dans les champs de saisie, effectuer 3 types de calculs en appuyant sur envoyer
boutons et afficher les résultats dans des étiquettes :
• Distance et temps d'impact à partir de la vitesse et de l'angle de sortie utilisant un
boucle.
• Distance et temps d'impact à partir de la vitesse et de l'angle de sortie utilisant
formule.
• Angle de sortie et temps d'impact à partir de la vitesse et de la distance d'impact.

Événements et liaison

Les applications tkinter se trouvent dans une boucle, la mainloop et les événements sont des événements.
qui se communiquent et qui ont des origines différentes : appuyer sur la souris, changer la taille de
un widget, appuyer sur des touches, etc. (beaucoup d'événements sont produits par l'utilisateur). Python
enregistre l'événement et nous permet de le lier à un widget et d'exécuter une fonction pour répondre à
dite événement. Pour lier l'événement :

[Link](evénement, gestionnaire)

Si l'événement indiqué est enregistré dans le widget, cela déclenche un appel au gestionnaire et donc à
la fonction indiquée.

Algunos Eventos

• <Button-1> Un bouton est enfoncé avec la souris, le button-1, c'est le bouton de gauche.
le button-2 est celui du milieu (s'il est disponible) et le button-3 est le bouton de droite.

42
Cahier d'exercices

• La souris se déplace tant que le bouton 1 (gauche) est enfoncé.


On dispose de B2-Motion, B3-Motion.
• <ButtonRelease-1> Le bouton un de la souris est libéré.
• <Double-Button-1> Un double-clic sur le button-1
• Le pointeur de la souris entre dans le widget.
• Le pointeur de la souris sort du widget.
• Se presse Entrée.
• <Key> El usuario presiona cualquier tecla.

L'objet événement
C'est un objet standard de Python qui a des attributs décrivant l'événement qui s'est produit.
produit. Certains attributs de l'événement sont :

• widget: El widget que genera el evento.


• x, y : Coordonnées de la position de la souris.
• Type : type d'événement.

Exemple 2. Cliquez sur l'image

Chaque fois que l'utilisateur cliquera sur l'image, la couleur de fond de la fenêtre changera.
creará una lista con colores aleatorios, cada vez que el usuario haga clic se escogerá el siguiente
couleur. Le code que nous devons inclure est :

Routine qui change la couleur de fond du widget


#déclaration de la variable qui maintient la couleur actuelle.
colorN=0

def CambiaColores(event):
colores=["azure","cadet blue","medium sea
green","goldenrod","salmon","maroon","PeachPuff3","SteelBlue3"]
colorM=len(colores)
couleurN globale
si colorN==colorM-1:
colorN=0
sinon :
colorN+=1
[Link](bg=colores[colorN])

[Link]('<Button-1>',CambiaColores) #Enlaza la etiqueta imagen con le


clic de la souris

43

Vous aimerez peut-être aussi