En pratique

De TARENTINO
Aller à la navigationAller à la recherche
Array

test


(Opérateurs:Magenta)
(Méthodes:Green)
(Fonctions:Red)

Accueil
Connexion
Déconnexion
Aide
Admin
Ft.png

En pratique

  • Appliquons maintenant la théorie à la pratique.

Infos utiles

  • Connaitre la version de Python
1 import sys
2 print(sys.version_info)

Index des modules d'extension Python

Exercices

Python Niveau 1

Sommes de 2 nombres

Sommes de 2 nombres =>
 1 # PROGRAMME sommeNombres
 2 #VAR
 3 nombre1 : int
 4 nombre2 : int
 5 somme : int
 6 #DEBUT
 7 nombre1 = int(input("Saisir le premier nombre : "))
 8 nombre2 = int(input("Saisir le deuxième nombre : "))
 9 somme = nombre1 + nombre2
10 print("La somme des 2 nombres est : " , somme)
11 #FIN

Ascenceurs

Ascenceur 01

 1 # Variables
 2 PorteCabineEstOuverte:bool
 3 lesEtagesEstES:[bool]=[true,
 4                        true,
 5                        false,
 6                        true]
 7 #lesEtagesEstES[1]=false
 8 EntrainementEtatDepl:str        # Arreté
 9 EtageCourant:int
10 EtageAppel:int
11 # Debut
12 EntrainementEtatDepl="Arreté"
13 EtageCourant=1
14 #if (EntrainementEtatDepl=="Arreté") :
15 EtageAppel=int(input("De quel étage appelez vous ? "))
16 # si EtageCourant < EtageAppel And EntrainementEtatDepl=Arreté and PorteCabineEstOuverte=false
17 if (EtageAppel > EtageCourant) :
18     # descente
19     print("Faire monter l'entrainement de la cabine !")
20     print("La cabine est en montée et ouverte False à l'étage ", EtageCourant)
21 else :
22     if (EtageAppel < EtageCourant) :
23         # si EtageCourant < EtageAppel And EntrainementEtatDepl=Arreté and PorteCabineEstOuverte=true
24         # Montée
25         print("Faire descendre l'entrainement de la cabine !")
26         print("La cabine est en descente et ouverte False à l'étage ", EtageCourant)
27     else :
28         print("Déjà au bon étage !!!! Faire ouvrir les portes")
29     # fin de si
30 # fin de si
31 print("La cabine est ",EntrainementEtatDepl, " et ouverte à l'étage ", EtageCourant)
32 # Fin

Ascenceur 02

 1 """"
 2 NAME        : ascenseur.py
 3 Description : Programme de pilotage d'un ascenseur - V1
 4 """
 5 
 6 # PROGRAMME ascenseur
 7 #
 8 # TYPES
 9 # Nous n'utilisons que des types natifs du langage (int, str ...), il n'est donc pas nécessaire de définir des types de données : ils existent
10 #
11 # VAR
12 etatEntrainement : str = "ARRETE" 		# Déclaration d'une donnée variable de type string et initialisation
13 										# Un entrainement arrêté
14 porteCabineEstOuverte : bool = False	# Déclaration d'une donnée variable de type booléen et initialisation
15 										# Une porte de cabine ouverte
16 										
17 										
18 etageCourantCabine : int = 1			# Déclaration d'une donnée variable de type entier et initialisation
19 										# Une cabine est à l'étge 1
20 etageDAppel : int  = -1					# Déclaration d'une donnée
21 # variable de type entier et initialisation
22 										# Aucun étage appelé (valeur -1)
23 lesEtagesEstES : [bool]=[True,True,False,True]
24 
25 n : int=0
26 
27 #
28 # DEBUT
29 print("	Debut du programme 3")
30 while n<4 :
31 	print("L'etage " , n , " est " ,lesEtagesEstES[n])
32 	n=n+1
33 print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage", etageCourantCabine)
34 
35 # L'usager appelle l'ascenseur
36 etageDAppel = int(input("De quel étage appelez-vous? "))
37 if (lesEtagesEstES[etageDAppel]==True) :
38 
39 	if (etageDAppel > etageCourantCabine) :
40 		print("FAIRE MONTER L'ENTRAINEMENT DE LA CABINE")
41 		etatEntrainement = "EN_MONTEE"
42 	else :
43 		if (etageDAppel < etageCourantCabine) :
44 			print("FAIRE DESCENDRE L'ENTRAINEMENT DE LA CABINE")
45 			etatEntrainement = "EN_DESCENTE"
46 		else :
47 			#La cabine se tient déjà à l'étage demandé : il faut juste ouvrir la porte
48 			print("FAIRE OUVRIR LA PORTE DE LA CABINE")
49 			porteCabineEstOuverte = True
50 	print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage", etageCourantCabine)
51 
52 	# Saisie de l'étage auquel arrive la cabine
53 	if ( etageCourantCabine != etageDAppel) :
54 		etageCourantCabine = int(input("La cabine arrive à quel étage? "))
55 		if (etageCourantCabine == etageDAppel) :
56 			print("FAIRE ARRETER L'ENTRAINEMENT")
57 			etatEntrainement = "ARRETE"
58 			print("FAIRE OUVRIR LA PORTE DE LA CABINE")
59 			porteCabineEstOuverte = True
60 			print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage",
61 				  etageCourantCabine)
62 
63 	# Saisie de l'étage auquel arrive la cabine
64 	if ( etageCourantCabine != etageDAppel) :
65 		etageCourantCabine = int(input("La cabine arrive à quel étage? "))
66 		if (etageCourantCabine == etageDAppel) :
67 			print("FAIRE ARRETER L'ENTRAINEMENT")
68 			etatEntrainement = "ARRETE"
69 			print ("FAIRE OUVRIR LA PORTE DE LA CABINE")
70 			porteCabineEstOuverte = True
71 			print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage",
72 				  etageCourantCabine)
73 
74 	# Saisie de l'étage auquel arrive la cabine
75 	if ( etageCourantCabine != etageDAppel) :
76 		etageCourantCabine = int(input("La cabine arrive à quel étage? "))
77 		if (etageCourantCabine == etageDAppel) :
78 			print("FAIRE ARRETER L'ENTRAINEMENT")
79 			etatEntrainement = "ARRETE"
80 			print("FAIRE OUVRIR LA PORTE DE LA CABINE")
81 			porteCabineEstOuverte = True
82 			print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage",
83 				  etageCourantCabine)
84 else :
85 	print("etage FERME")
86 print("	Fin du programme")
87 #
88 # FIN

Ascenceur 03

  1 """"
  2 NAME        : ascenseur.py
  3 Description : Programme de pilotage d'un ascenseur - V2 - Tableaux, structures, boucles
  4 """
  5 #
  6 # PROGRAMME ascenseur
  7 # TYPES
  8 from enum import Enum # Truc syntaxique que l'on ne comprend pas encore
  9 class EnumEtatEnt (Enum) :  # Définition d'un type énumération
 10 	ARRETE = 1
 11 	EN_MONTEE = 2
 12 	EN_DESCENTE = 3
 13 
 14 class EnumEtatPorte (Enum) :
 15 	FERME = 1
 16 	OUVERT = 2
 17 
 18 class EtatCabine (Enum) :
 19 	ARRETE_FERME = 1
 20 	ARRETE_OUVERT = 2
 21 	EN_DESCENTE_FERME = 3
 22 	EN_MONTEE_FERME = 4
 23 
 24 #Constante NB_ETAGES = 4 - Le nombre d'étages de l'ascenseur est 4, RDC, étage 0, inclus - Il y a donc 3 étages proprement dits
 25 #Constante NUM_PORTE_CABINE = 4 - Le numéro de la porte de cabine est 4 (les premiers numéros correspondent à des portes d'étage)
 26 
 27 from dataclasses import dataclass # Truc syntaxique que l'on ne comprend pas encore
 28 @dataclass                        # Autre truc syntaxique ...
 29 class Cabine :                    # Définition d'un type structure Cabine
 30 	etat : EtatCabine
 31 	etageCourant : int
 32 	numPorte: int
 33 
 34 @dataclass
 35 class Etage :                      # Définition d'un type structure Etage
 36 	estES : bool
 37 	estEteint : bool
 38 	numPorte : int
 39 #
 40 # VAR
 41 
 42 def init() :
 43 	print("   L'entrainement est", etatEntrainement)
 44 	print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
 45 	print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
 46 
 47 etatEntrainement : EnumEtatEnt = EnumEtatEnt.ARRETE 	# Déclaration d'une donnée variable de type énumération et initialisation -
 48 																# 1 entrainement, arrêté
 49 lesEtatPortes : [EnumEtatPorte] = [EnumEtatPorte.FERME, EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME] 	# Déclaration d'une donnée variable de type tableau d'énumération et initialisation
 50 																												# 5 portes fermées - 4 portes d'étage et 1 porte de cabine (la dernière)
 51 laCabine : Cabine = Cabine(EtatCabine.ARRETE_FERME, 1, 4)           	# Déclation d'une donnée variable de type structure et initialisation
 52 															# 1 cabine, arrêté fermée, à l'étage 1 et avec la porte 4
 53 lesEtages : [Etage] = [Etage(True,True,0), Etage(True,True,1), Etage(False,True,2), Etage(True,True,3)]  # Déclaration d'une donnée variable de type tableau de 4 booléens et initialisation
 54 																									   # 4 étages, chaque étage, en service, éteint, avec une porte de son numéro
 55 etageDAppel : int  = -1 	# Déclaration d'une donnée variable de type entier et initialisation
 56 							# Aucun étage appelé (valeur -1)
 57 #
 58 # DEBUT
 59 print("   Début du programme 9")
 60 
 61 # Affichage état de l'ascenseur
 62 # Affichage état complet de la cabine
 63 print("   L'entrainement est", etatEntrainement)
 64 print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
 65 print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
 66 
 67 #Affichage état complet des étages
 68 """""
 69 numEtage = 0
 70 while numEtage < 4  :# NB_ETAGES
 71 	print("   L'étage ", numEtage, "est es ", lesEtages[numEtage].estES, ", éteint ", lesEtages[numEtage].estEteint,
 72 		  "numéro de porte ", lesEtages[numEtage].numPorte,
 73 		  "dans l'état ", lesEtatPortes[lesEtages[numEtage].numPorte])
 74 	numEtage = numEtage + 1
 75 """	
 76 for numEtage in range(0,4) :
 77 	print("   L'étage ", numEtage, "est es ", lesEtages[numEtage].estES, ", éteint ", lesEtages[numEtage].estEteint,
 78 		  "numéro de porte ", lesEtages[numEtage].numPorte,
 79 		  "dans l'état ", lesEtatPortes[lesEtages[numEtage].numPorte])
 80 # L'usager appelle l'ascenseur
 81 etageDAppel = int(input("De quel étage appelez-vous? "))
 82 if lesEtages[etageDAppel].estES :
 83 	if (etageDAppel > laCabine.etageCourant) :
 84 		print("FAIRE MONTER L'ENTRAINEMENT DE LA CABINE")
 85 		etatEntrainement = EnumEtatEnt.EN_MONTEE
 86 		laCabine.etat = EtatCabine.EN_MONTEE_FERME
 87 	else :
 88 		if (etageDAppel < laCabine.etageCourant) :
 89 			print("FAIRE DESCENDRE L'ENTRAINEMENT DE LA CABINE")
 90 			etatEntrainement = EnumEtatEnt.EN_DESCENTE
 91 			laCabine.etat = EtatCabine.EN_DESCENTE_FERME
 92 		else :
 93 			#La cabine se tient déjà à l'étage demandé : il faut juste ouvrir les portes
 94 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
 95 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
 96 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
 97 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
 98 			laCabine.etat = EtatCabine.ARRETE_OUVERT
 99 	# Affichage état complet de la cabine
100 	print("   L'entrainement est", etatEntrainement)
101 	print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
102 	print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
103 	while ( laCabine.etageCourant != etageDAppel) : 	# La cabine n'est pas à l'étage d'appel
104 		# Saisie de l'étage auquel arrive la cabine
105 		laCabine.etageCourant = int(input("La cabine arrive à quel étage? "))
106 		if (laCabine.etageCourant == etageDAppel) :
107 			print("FAIRE ARRETER L'ENTRAINEMENT")
108 			etatEntrainement = EnumEtatEnt.ARRETE
109 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
110 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
111 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
112 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
113 			laCabine.etat = EtatCabine.ARRETE_OUVERT
114 		# Affichage état complet de la cabine
115 		print("   L'entrainement est", etatEntrainement)
116 		print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
117 		print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
118 else :
119 	print("   L'appel ne peut être pris en compte car l'étage n'est pas en service")
120 
121 print("   Fin du programme")
122 #
123 # FIN

Ascenceur 04

  1 """"
  2 NAME        : ascenseur.py
  3 Description : Programme "ascenseur", programme de pilotage d'un ascenseur - V3 - Sous-programmes
  4 """
  5 # PROGRAMME ascenseur
  6 #
  7 # TYPES
  8 from enum import Enum # Truc syntaxique que l'on ne comprend pas encore
  9 class EnumEtatEnt (Enum) :  # Définition d'un type énumération
 10 	ARRETE = 1
 11 	EN_MONTEE = 2
 12 	EN_DESCENTE = 3
 13 
 14 class EnumEtatPorte (Enum) :
 15 	FERME = 1
 16 	OUVERT = 2
 17 
 18 class EtatCabine (Enum) :
 19 	ARRETE_FERME = 1
 20 	ARRETE_OUVERT = 2
 21 	EN_DESCENTE_FERME = 3
 22 	EN_MONTEE_FERME = 4
 23 
 24 #Constante NB_ETAGES = 4 - Le nombre d'étages de l'ascenseur est 4, RDC, étage 0, inclus - Il y a donc 3 étages proprement dits
 25 #Constante NUM_PORTE_CABINE = 4 - Le numéro de la porte de cabine est 4 (les premiers numéros correspondent à des portes d'étage)
 26 
 27 from dataclasses import dataclass # Truc syntaxique que l'on ne comprend pas encore
 28 @dataclass                        # Autre truc syntaxique ...
 29 class Cabine :                    # Définition d'un type structure Cabine
 30 	etat : EtatCabine
 31 	etageCourant : int
 32 	numPorte: int
 33 
 34 @dataclass
 35 class Etage :                      # Définition d'un type structure Etage
 36 	estES : bool
 37 	estEteint : bool
 38 	numPorte : int
 39 #
 40 # VAR
 41 etatEntrainement : EnumEtatEnt = EnumEtatEnt.ARRETE 	# Déclaration d'une donnée variable de type énumération et initialisation -
 42 																# 1 entrainement, arrêté
 43 lesEtatPortes : [EnumEtatPorte] = [EnumEtatPorte.FERME, EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME] 	# Déclaration d'une donnée variable de type tableau d'énumération et initialisation
 44 																												# 5 portes fermées - 4 portes d'étage et 1 porte de cabine (la dernière)
 45 laCabine : Cabine = Cabine(EtatCabine.ARRETE_FERME, 1, 4)           	# Déclation d'une donnée variable de type structure et initialisation
 46 															# 1 cabine, arrêté fermée, à l'étage 1 et avec la porte 4
 47 lesEtages : [Etage] = [Etage(True,True,0), Etage(True,True,1), Etage(False,True,2), Etage(True,True,3)]  # Déclaration d'une donnée variable de type tableau de 4 booléens et initialisation
 48 																									   # 4 étages, chaque étage, en service, éteint, avec une porte de son numéro
 49 etageDAppel : int  = -1 	# Déclaration d'une donnée variable de type entier et initialisation
 50 							# Aucun étage appelé (valeur -1)
 51 #
 52 # SOUS-PROGRAMME afficherEtatCompletCabine
 53 def afficherEtatCompletCabine() :
 54 	# DEBUT
 55 	print("   L'entrainement est", etatEntrainement)
 56 	print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
 57 	print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
 58 	# FIN
 59 # FIN SOUS-PROGRAMME
 60 #
 61 # SOUS-PROGRAMME calculerEtatCabine - retourne une valeur de type EtatCabine
 62 def calculerEtatCabine() :
 63 	# VAR LOC
 64 	result : EtatCabine
 65 	# DEBUT
 66 	if (etatEntrainement == EnumEtatEnt.ARRETE ) :
 67 		if (lesEtatPortes[laCabine.numPorte] == EnumEtatPorte.FERME) :
 68 			result = EtatCabine.ARRETE_FERME
 69 		else :
 70 			result = EtatCabine.ARRETE_OUVERT
 71 	elif (etatEntrainement == EnumEtatEnt.EN_DESCENTE ) :
 72 		result = EtatCabine.EN_DESCENTE_FERME
 73 	else :
 74 		result = EtatCabine.EN_MONTEE_FERME
 75 	return result
 76 	# FIN
 77 # FIN SOUS-PROGRAMME
 78 
 79 # DEBUT
 80 print("   Début du programme 10")
 81 # Affichage état de l'ascenseur
 82 # Affichage état complet de la cabine
 83 afficherEtatCompletCabine()
 84 #Affichage état complet des étages
 85 for numEtage in range(0,4) :
 86 	print("   L'étage ", numEtage, "est es ", lesEtages[numEtage].estES, ", éteint ", lesEtages[numEtage].estEteint,
 87 		  "numéro de porte ", lesEtages[numEtage].numPorte,
 88 		  "dans l'état ", lesEtatPortes[lesEtages[numEtage].numPorte])
 89 # L'usager appelle l'ascenseur
 90 etageDAppel = int(input('De quel étage appelez-vous? '))
 91 if lesEtages[etageDAppel].estES :
 92 	if (etageDAppel > laCabine.etageCourant) :
 93 		print("FAIRE MONTER L'ENTRAINEMENT DE LA CABINE")
 94 		etatEntrainement = EnumEtatEnt.EN_MONTEE
 95 		laCabine.etat = calculerEtatCabine()
 96 	else :
 97 		if (etageDAppel < laCabine.etageCourant) :
 98 			print("FAIRE DESCENDRE L'ENTRAINEMENT DE LA CABINE")
 99 			etatEntrainement = EnumEtatEnt.EN_DESCENTE
100 			laCabine.etat = calculerEtatCabine()
101 		else :
102 			#La cabine se tient déjà à l'étage demandé : il faut juste ouvrir les portes
103 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
104 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
105 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
106 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
107 			laCabine.etat = calculerEtatCabine()
108 	# Affichage état complet de la cabine
109 	afficherEtatCompletCabine()
110 	while ( laCabine.etageCourant != etageDAppel) : 	# La cabine n'est pas à l'étage d'appel
111 		# Saisie de l'étage auquel arrive la cabine
112 		laCabine.etageCourant = int(input('La cabine arrive à quel étage? '))
113 		if (laCabine.etageCourant == etageDAppel) :
114 			print("FAIRE ARRETER L'ENTRAINEMENT")
115 			etatEntrainement = EnumEtatEnt.ARRETE
116 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
117 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
118 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
119 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
120 			laCabine.etat = calculerEtatCabine()
121 		# Affichage état complet de la cabine
122 		afficherEtatCompletCabine()
123 else :
124 	print("	l'appel ne peut être pris en compte car l'étage n'est pas en service")
125 
126 print("   Fin du programme")
127 #
128 # FIN

Python Niveau 2 (Alex)

Exercice Hello Word

  • Sans commentaire, si tu n'y arrives pas alors laisses tomber Python....
1 #!/usr/bin/env python3
2 print("Hello, world ! bientôt l'été")
Hello, world ! bientôt l'été
  • Analyse:
    • Non trop facile !

Exercice Hello Word compatible Python 2 et Python 3

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 from __future__ import print_function
4 print("hello, world ! bientôt l'été")
Hello, world ! bientôt l'été
  • Analyse:
    • Il existe plusieurs versions de Python, je ne parlerai ici que de la version 2 et 3 car elles ont de principales différences.
Print
  • Le changement le plus radical étant surement de transformer le print en fonction.
Python 2: print "bonjour"
Python 3: print("bonjour")
  • Mais aussi:
Python 2                            Python 3   
print "Bonjour"                 →   print("Bonjour")
print "Bonjour", variable1      →   print("Bonjour", variable1)
print "\n".join([x, y])         →   print(x, y, sep="\n")
print >> sys.stderr, "erreur"   →   print("Erreur", file=sys.stderr)
print "une ligne ",             →   print("une ligne", end="")
Exceptions
Python 2                          Python 3
raise IOError, "file error"   →   raise IOError("file error")
raise "Erreur 404"            →   raise Exception("Erreur 404!")
raise TypeError, msg, tb      →   raise TypeError.with_traceback(tb)
Changement de nom de modules
Python 2             Python 3
_builtin__       →   builtins
ConfigParser     →   configparser
copy_reg         →   copyreg
cPickle          →   pickle
Queue            →   queue
repr             →   reprlib
SocketServer     →   socketserver
Tkinter          →   tkinter
_winreg          →   winreg
thread           →   _thread
dummy_thread     →   _dummy_thread
markupbase       →   _markupbase
Réorganisation
Python 2                        Python 3
xrange()                    →   range()
reduce()                    →   functools.reduce()
intern()                    →   sys.intern()
unichr()                    →   chr()
basestring()	            →   str()
long()	                    →   int()
itertools.izip()            →   zip()
itertools.imap()            →   map()
itertools.ifilter()         →   filter()
itertools.ifilterfalse()    →   itertools.filterfalse()
cookielib                   →   http.cookiejar
Cookie	                    →   http.cookies
htmlentitydefs              →   html.entities
HTMLParser                  →   html.parser
httplib                     →   http.client
Dialog                      →   tkinter.dialog
FileDialog                  →   tkinter.FileDialog
ScrolledText                →   tkinter.scolledtext
SimpleDialog                →   tkinter.simpledialog
Tix                         →   tkinter.tix
Tkconstants                 →   tkinter.constants
Tkdnd                       →   tkinter.dnd
tkColorChooser              →   tkinter.colorchooser
tkCommonDialog              →   tkinter.commondialog
tkFileDialog                →   tkinter.filedialog
tkFont                      →   tkinter.font
tkMessageBox                →   tkinter.messagebox
tkSimpleDialog              →   tkinter.simpledialog
robotparser                 →   urllib.robotparser
urlparse                    →   urllib.parse
cStringIO.StringIO()        →   io.StringIO
UserString                  →   collections.UserString
UserList                    →   collections.UserList

Python Niveau 3 (Jean François)

Loto

  • Écrire un programme qui réalise un tirage de Loto. Ce dernier est composé de:
    • 5 boules parmi 49 boules numérotées de 1 à 49
    • 1 boule “chance” parmi 10 boules numérotées de 1 à 10
 1 # loto_01.py
 2 import random
 3 nb_boules=49
 4 boules = [ x for x in range(1,nb_boules+1) ]
 5 tirage = []
 6 for boule in range(5):
 7     une_boule = boules[ random.randint(1,len( boules )) - 1 ]
 8     tirage.append( une_boule )
 9     boules.remove(une_boule)
10 chance = random.randint(1,10)
11 print(tirage, chance)
12 tirage.sort()
13 print(tirage)
  • Reprendre le programme de Loto précédent.
    • Utiliser une Classe “Loto” avec un constructeur qui génère un tirage.
Un tirage est composé de :
- Un numéro de tirage
- Les 5 boules
- Le numéro Chance
    • Ajouter une variable de classe qui mémorise les tirages ainsi qu’une méthode qui renvoie un tirage en fonction du numéro du tirage.
    • Créer une référence au dernier tirage appelé “dernierTirage” (ce n’est donc pas une instanciation)
    • Ajouter de la documentation et afficher celle-ci dans la console (introspection)
    • Ajouter un morceau de code qui peut générer une exception:
  • On demande un numéro de tirage et on affiche le tirage correspondant.
 1 # loto_02.py
 2 # v2: on utilise une Classe
 3 """ Un module pour gerer des tirages de Loto """
 4 import random
 5 
 6 class Loto:
 7     """ Permet d'instancier des tirages de Loto """
 8     nb_boules=49
 9     les_tirages = []
10 
11     def __init__(self, num_tirage):
12         """ Cree un tirage [num, les 5 boules, numero change]) """
13         tirage_5_boules = []
14         boules = [ x for x in range(1,Loto.nb_boules+1) ]
15         for boule in range(5):
16             une_boule = boules[ random.randint(1,len( boules )) - 1 ]
17             tirage_5_boules.append( une_boule )
18             boules.remove(une_boule)
19 
20         chance = random.randint(1,10)
21         tirage_5_boules .sort()
22         self.num = num_tirage
23         self.cinqBoules = tirage_5_boules
24         self.chance = chance
25         Loto.les_tirages.append( self )
26 
27     def __str__(self):
28         """ conversion d'un tirage en chaine """
29         ch = "Numero: " + str(self.num) + " ,5 boules: "
30         for i in range(5): ch += str( self.cinqBoules[i] ) + " - "
31         ch += " ,Numero chance: "+ str(self.chance)
32         return ch
33 
34     @classmethod
35     def getUnTirage(cls, num ):
36         """ Exemple de methode de classe """
37         for t in cls.les_tirages:
38             if t.num == num: return t
39     return None
40 
41     if __name__ == "__main__":
42         num = 100
43         for i in range(5):
44             un_tirage = Loto(num+i)
45         le_dernier_tirage = un_tirage
46         for t in Loto.les_tirages:
47             print( t.num, t.cinqBoules, t.chance)
48 
49         print("Dernier: %s\n" % (str(le_dernier_tirage) ))
50         try:
51             num = int( input("Numero de tirage ? ") )
52         except:
53             print("ERREUR: saisie incorrect")
54         else:
55             print("Tirage 103: %s\n" % (str( Loto.getUnTirage( num ) ) ) )

Probabilité course lièvre/tortue

  • Main
1 import lievre.py
2 nb_coup:int=1000000
3 i:int=0
4 while i < nb_coup:
5     lievre.py
6     i=i+1
  • lievre2.py
 1 ###### lievre2.py: le lievre et la tortue
 2 from random import *
 3 total= 0
 4 unGagnant = False
 5 gagnant = None
 6 while not unGagnant:
 7     de = randint(1,6)
 8     print ("Valeur du lance: ", de )
 9     total = total + de
10     if de == 6 :
11         gagnant = "Lievre"
12         unGagnant = True
13     elif total >= 6:
14         gagnant = "Tortue"
15         unGagnant = True
16 print ("Gagnant: ", gagnant )
  • Tortue.py
 1 from random import *
 2 lievre:int=0
 3 i:int=1000000
 4 dep=i
 5 r:int=0
 6 def golievre():
 7     total= 0
 8     while True:
 9         de = randint(1,6)
10         if de == 6 :
11             r=1
12             break
13         total = total + de
14         if total >= 6:
15             r=0
16             break
17     return r
18 # START
19 while i > 0:
20     retour=golievre()
21     #print(retour)
22     if retour==1:
23         lievre+=1
24     i-=1
25 lievre_gagne=lievre
26 tortue_gagne=dep-lievre
27 pourcent=100*lievre_gagne/(tortue_gagne+lievre_gagne)
28 print(lievre, 'sur 1000000', pourcent)
  • Analyse:

Exercice Hello Word compatible Python 2 et Python 3

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 from __future__ import print_function
4 print("hello, world ! bientôt l'été")
Hello, world ! bientôt l'été
  • Analyse:

Sauvegarde

  • Je travaille sur un système Linux, je réinstalle quelques fois mon système.
  • J'ai besoin pour cela de créer une sauvegarde.

Cahier des charges

  • En utilisant au maximum Python,
  • voici les différentes parties à sauvegarder sur un autre support:
    • /etc
    • /var
    • /home
    • /root
  • Établir la liste de tous les programmes installés pour les réinstaller.