Vous êtes sur la page 1sur 7

Série d’exercices Python

Exercice 1 :

Ecrire un code python qui permet l’extraction des chiffres décimaux d’un
entiers.

Modifier le script afin d’obtenir nc le nombre de chiffres qui composent un


entier x.

Comparer votre résultat avec nc=log(x)+1

Exercice 2 :

Ecrire un script en Python qui renvoie le rang du jour dans l’année connaissant
la date ( i.e connaissant le jours et le mois). On ne considère que des années
simples (non bissextiles)

Exercice 3

On définit la suite
∈N
 
=  
3 +1

Il semble que cette suite, pour tout entier connu, aboutit toujours au cycle
…1,4,2,1,4,2,…, on ne dispose toujours pas d’un contre exemple ni d’une
démonstration de ce fait.

1- Ecrire un script Python qui donne les n premiers termes de la suite de


Syracuse pour donné. ( é ′ )
2- Vérifier que l’on aboutit toujours au cycle 4,2,1,42,1,…. Pour ∈ 0; 30
3- On note h le nombre d’étapes nécessaires pour atteindre la valeur 1
pour la première fois pour un donné ( h dépend donc de ) . on
appel h( ) la hauteur syracusienne de
Déterminer tous les couples ( , ℎ( )) 0≤ ≤ 1000.

Exercice 4 :

On appelle nombre d’Armstrong un nombre qui égal à la somme des cubes de


ses chiffres. Par exemple 153 = 1 + 5 + 3 est un nombre d’Armstrong.

1- Ecrire en Python une fonction unité qui prend en argument un nombre


entier n et renvoie le chiffre des unités de n.
1
2- Ecrire en Python une fonction dizaine qui prend en argument un
nombre entier n et renvoie le chiffre des dizaines de n.
3- Ecrire en Python une fonction centaine qui prend en argument un
nombre entier n et renvoie le chiffre des centaines de n.
4- Ecrire en Python une fonction Armstrong qui prend en argument un
entier m inférieure à 999 et renvoie tous les nombres de Armstrong
inférieures à m

Exercice5 :

1. Définir une classe Employé caractérisée par les attributs


: Matricule, Nom, Prénom, DateNaissance, DateEmbauche, Salaire.

2. Définir un constructeur permettant d’initialiser tous les attributs.

3. Ajouter à la classe la méthode Age( ) qui retourne l’âge de l’employé.

4. Ajouter à la classe la méthode Anciennete( ) qui retourne le nombre


d’années d’ancienneté de l’employé.

5. Ajouter à la classe la méthode AugmentationDuSalaire( ) qui


augmente le salaire de l’employé en prenant en considération
l’ancienneté.

Si Ancienneté < 5 ans, alors on ajoute 2%. - Si Ancienneté < 10 ans, alors
on ajoute 5%. - Sinon, on ajoute 10%.

7. Ajouter la méthode AfficherEmployé() qui affiche les informations de


l’employé comme suit :

- Matricule : […]

- Nom complet : [NOM Prénom]

- Age : […]

- Ancienneté : […]

- Salaire : […]

Le nom doit être affiché en majuscule. Pour le prénom, la première lettre


doit être en majuscule, les autres en minuscule.

2
8. Ecrire un programme de test pour la classe Employé.

Exercice 6 :

1. Écrire une classe Complexes permettant de représenter des nombres complexes. Un nombre
complexe Z comporte une partie réelle et une partie imaginaire :
Z = PartieRéelle + PartieImaginaire * i
2. Définir un constructeur d’initialisation pour la classe.
3. Ajouter les méthodes suivantes :
 Plus(Complexe) : Elle permet de retourner le nombre complexe obtenu en ajoutant au
nombre en cours un nombre complexe passé en argument.
 Moins(Complexe) : Elle permet de retourner le nombre complexe obtenu en soustrayant au
nombre en cours un nombre complexe passé en argument.
 Afficher ( ) : Elle donne une représentation d'un nombre complexe comme suit : a+b*i.
4. Écrire un programme permettant de tester la classe Complexe

Exercice 7 : Polynômes

Un polynôme à une variable (dont le nom n'a pas d'importance, disons x,


considéré comme une variable purement formelle, qui n'est pas présente dans
la structure !):

=8∗ +3∗ −4∗ +2

peut être représenté par une liste de tuples (coefficient,puissance) : [(2,0),(-


4,1),(3,2),(8,4)].

C'est une représentation "creuse", notez l'absence des termes dont le


coefficient est égal à zéro, par ex. le terme contenant x3. Notez également
l'ordre des coefficients. Normalement ceci est plus utilisé que l'ordre inverse,
mais il s'agit d'une convention. Cet ordre conceptuellement peut être
arbitraire, mais la gestion de telles listes sera alors plus difficile.

1) Écrire une classe Poly(object), dont la méthode __init__ accepte un nombre

quelconque de tuples (c,n), et qui construit une liste interne l triée contenant

3
ces tuples. Accessoirement la procédure doit éliminer les tuples avec le

coefficient égal à zéro :

a = Poly((2,2),(1,4),(0,3),(2,0))

a.l → [(2,0),(2,2),(1,4)]

2) Écrire la méthode __repr__ qui affichera ce polynôme sous la forme

x^4 + 2 x^2 + 2

Réfléchissez comment éviter la laideur genre x^3 + -1 x^1 (coefficients et


puissances égaux à 1, et coefficients négatifs). Ne passez pas trop de temps
dessus !

3) Écrire la méthode __add__ qui ajoute deux polynômes. Ici, l'algorithme est
très simple et évident, la seule "complication" est la suppression du terme,
dont le coefficient devient égal à zéro.

4) Écrire aussi la méthode __mul__ qui multiplie deux polynômes. Elle doit être
assez universelle, et permettre de multiplier un polynôme par un nombre.

Réfléchissez comment envisager l'algorithme de multiplication. Commencez


par une procédure auxiliaire (nom arbitraire) qui multiplie un polynôme par
un monôme, par ex. 4xn pour un n donné. Le reste c'est la récursivité, ou
l'itération... : si on sépare p=cxn+r, alors p⋅q=cxn⋅q+r⋅q, mais nous savons déjà
comment ajouter deux polynômes.

4
Exercice 8 :

Définissez une classe Satellite qui permette d’instancier des objets simulant
des satellites artificiels lancés dans l’espace, autour de la terre, le constructeur
de cette classe initialisera les attributs d’instance suivants, avec les valeurs par
défaut indiquées : masse=100 , vitesse =0

Lorsque l’on instanciera un nouvel objet Satellite, on pourra choisir son nom,
sa masse et sa vitesse.

Les méthodes suivantes seront définies :

 Implusion(force,duree) permettra de faire varier la vitesse du satellite.


Pour savoir comment, rappelez-vous votre cours de physique : la
variation de vitesse ∆v subie par un objet de masse m soumis à l’action

d’une force F pendant un temps t vaut ∆ = .
 Affiche_vitesse() affichera le nom du satellite et sa vitesse courante.
 Energie() renverra au programme appelant la valeur de l’ énergie
cinétique du satellite.

Rappel : l’énergie cinétique se calcule à l’aide de la formule =

Exercice 9 :

Définissez une classe Cercle, les objets construits à partir de cette classe seront
des cercles de tailles variées. En plus de la méthode constructeur (qui utilisera
donc un paramètre rayon) , vous définirez une méthode surface(), qui devra
renvoyer la surface du cercle.

Définissez ensuite une classe Cylindre dérivée de la précédente. Le


constructeur de cette nouvelle classe comportera les deux paramètres rayon
et hauteur. Vous y ajouterez une méthode volume qui devra renvoyer le
volume du cylindre (rappel : volume d’un cylindre=surface de section *
hauteur)

Définissez une classe Cône , qui devra dériver cette fois de la classe Cylindre, et
dont le constructeur comportera lui aussi les deux paramètres rayon et
hauteur. Cette nouvelle classe possédera sa propre méthode volume, laquelle
devra renvoyer le volume du cône (rappel : volume d’un cône = volume du
cylindre correspondant divisé par 3).

5
Exercice 10 :

1) Définissez une classe JeuDeCartes permettant d’instancier des objets


dont le comportement soit similaire à celui d’un vrai jeu de cartes. La
classe devra comporter au moins les quatre méthodes suivantes :
 Méthode constructeur : création et remplissage d’une liste de 52
éléments, qui sont eux-mêmes des tuples de 2 entiers. Cette liste de
tuples contiendra les caractéristiques de chacune des 52 cartes. Pour
chacune d’elles, il faut en effet mémoriser séparément un entier
indiquant la valeur (2,3,4,5,6,7,8,9,1à,11,12,13,14, les 4 dernières
valeurs étant celles des valet, dame, roi et as), et un autre entier
indiquant la couleur de la carte( c'est-à-dire 3,2,1,0 pour Cœur, Carreau,
Trèfle et Pique)
Dans une telle liste, l’élément (11,2) désigne donc le valet de Trèfle, et la
liste terminée doit être du type :
[(2,0),(3,0),(4,0),………,(12,3),(13,3),(12,3)]
 Méthode nom_carte (): cette méthode doit renvoyer, sous la forme
d’une chîne, l’identité d’une carte quelconque dont on lui a fourni le
tuple descripteur en argument. Par exemple, l’instruction :
print(jeu.mon_carte((14,3))) doit provoquer l’affichage de As de pique
 Méthode battre() : comme chacun sait, battre les cartes consiste à les
mélanger. Cette méthode sert donc à mélanger les éléments de la liste
contenant les cartes, quel qu’en soit le nombre.
 Méthode tirer() : lorsque cette méthode est invoquée, une carte est
retirée du jeu, le tuple contenant sa valeur et sa couleur est renvoyé au
programme appelant, on retire toujours la première carte dans la liste,
si cette méthode est invoquée alors qu’il ne reste plus aucune carte dans
la liste, il faut alors renvoyer l’objet spécial None au programme
appelant.
Exemple d’utilisation de la classe JeuDeCartes :
jeu=JeuDeCartes() #instanciation d’un objet
jeu.battre() #mélange des cartes
for n in range(53) :
c=jeu.tirer() #tirage des 52 cartes
if c==None : #il ne reste plus aucune carte dans la liste
print(‘Terminé !’)
else :
print(jeu.mon_carte(c) #valeur et couleur de la carte

6
2) Définir deux joueurs A et B. instancier deux jeux de cartes (un pour
chaque joueur) et les mélanger. Ensuite, à l’aide d’une boucle, tirer 52
fois une carte de chacun des deux jeux et comparer meurs valeurs. Si
c’est la première des deux qui a la valeur la plus élevée, on ajoute un
point au joueur A . Si la situation contraire se présente, on ajoute un
point au joueur B. si les deux valeurs sont égales, on passe au tirage
suivant. Au terme de la boucle, comparer les comptes de A et B pour
déterminer le gagnant.

Vous aimerez peut-être aussi