TP - Chiffres d'un nombre☘
Téléchargez le fichier « à trous » TPF01.41.py
(clic droit -> [Enregistrer sous]) et enregistrez-le dans le dossier
[F01-Bases de programmation]
.
Important
Dans chaque fonction à programmer, remplacez le mot-clef pass
par les
instructions nécessaires.
De plus, ne vous précipitez pas sur les pistes !
Prenez le temps de réflechir et chercher par vous-même en suivant les
conseils ci-après.
Conseils
- Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche
[F5]
. - Avez-vous bien fait un schéma au brouillon pour visualiser le problème posé ?
- Avez-vous essayé de rédiger un algorithme en français, avec vos propres mots, avant de vous lancer dans la programmation sur machine ?
- Avez-vous utilisé des affichages intermédiaires, des
print()
, pour visualiser au fur et à mesure le contenu des variables ? - Avez-vous testé le programme avec les propositions de tests fournies ?
- Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?
Partie 1 : Chiffre des unités, chiffre des dizaines☘
-
Complétez le corps de la fonction
chiffre_unite()
en respectant ses spécifications.1 2 3 4 5
def chiffre_unite(n): """ n – int, entier positif ou nul Sortie : int - le chiffre des unités de n """
Une piste
Pensez à la division entière en testant les instructions
n%10
etn//10
dans la console. -
Vérifiez et corrigez si besoin votre travail avec l'aide des tests suivants :
>>> chiffre_unite(254) 4 >>> chiffre_unite(5629) 9
-
Complétez le corps de la fonction
chiffre_dizaine()
qui renvoie le chiffre des dizaines de l'entiern
entré en paramètre.1 2 3 4 5
def chiffre_dizaine(n): """ n – int, entier positif ou nul Sortie : int - le chiffre des dizaines de n """
-
Vérifiez et corrigez si besoin votre travail avec l'aide des tests suivants :
>>> chiffre_dizaine(254) 5 >>> chiffre_dizaine(5629) 2
Partie 2 : Chiffre de poids k
☘
Dans un nombre entier, le poids d'un chiffre est son rang (sa position) à partir du chiffre de droite.
Considérons par exemple le nombre 547
. Alors :
7
est le chiffre de poids 0 ;4
est le chiffre de poids 1 ;5
est le chiffre de poids 2.
Travail à faire☘
-
Complétez le corps de la fonction
chiffre_poids()
qui doit renvoyer le chiffre de poidsk
de l'entiern
.1 2 3 4 5
def chiffre_poids(k, n): """ k, n – int, entiers positifs ou nuls Sortie : int - le chiffre de n ayant pour « poids » k """
Une piste
Inspirez-vous de la fonction
chiffre_dizaine()
en utilisant une bouclefor
afin d'atteindre ce chiffre de poidsk
. -
Vérifiez et corrigez si besoin votre travail avec l'aide des tests suivants :
>>> chiffre_poids(0, 254) 4 >>> chiffre_poids(1, 254) 5 >>> chiffre_poids(2, 254) 2 >>> chiffre_poids(3, 254) 0
Partie 3 : Nombre de chiffres☘
-
Complétez le corps de la fonction
nb_chiffres()
en respectant ses spécifications.1 2 3 4 5
def nb_chiffres(n): """ n – int, entier positif ou nul Sortie : int - le nombre de chiffres de l'entier n """
Une piste
Tant que le nombre de dizaines n'est pas nul, on augmente le nombre de chiffres de 1...
Une autre piste
Voici une proposition de code « à trous », à compléter :
1 2 3 4 5 6 7 8 9 10
def nb_chiffres(n): """ n – int, entier positif ou nul Sortie: int - le nombre de chiffres de l'entier n """ nb = 1 while ... : nb = ... n = ... return nb
-
Vérifiez et corrigez si besoin votre travail avec l'aide des tests suivants :
>>> nb_chiffres(254) 3 >>> nb_chiffres(5029) 4
Partie 4 : Somme des chiffres☘
-
Complétez le corps de la fonction
somme_chiffres()
en respectant ses spécifications.1 2 3 4 5
def somme_chiffres(n): """ n – int, entier positif ou nul Sortie : int - la somme des chiffres de l'entier n """
Une piste
Tant que le nombre de dizaines n'est pas nul, on ajute le chiffre des unités à la somme calculée.
-
Vérifiez et corrigez si besoin votre travail avec l'aide des tests suivants :
>>> somme_chiffres(254) 11 >>> somme_chiffres(5029) 16
Partie 5 : Divisibilité par 3☘
Cette partie est un peu plus délicate à traiter. Réalisez un brouillon avant de vous lancer dans le code...
-
En utilisant la fonction
somme_chiffres()
de la partie précédente, programmez la fonctionsomme_tot_chiffres()
qui calcule la somme des chiffres de l'entiern
saisi en paramètre. Si cette somme n'est pas compris entre0
et9
, on calcule alors la somme des chiffres de cette somme... et ainsi de suite jusqu'à obtenir un résultat entre0
et9
, à renvoyer.Une piste
Voici une proposition de code « à trous », à compléter :
1 2 3 4 5 6 7 8
def somme_tot_chiffres(n): """ n – int, entier positif ou nul Sortie: int - la somme des chiffres de l'entier n jusqu'à obtenir un seul chiffre """ somme = somme_chiffres(n) while ...
-
Utilisez la fonction
somme_tot_chiffres()
pour définir la fonctionest_multiple_3()
qui renvoie un booléen indiquant si l'entier naturel saisi en paramètre est un multiple de 3 (il est interdit d'utiliser le modulo «%
»). -
Vérifiez votre travail avec l'aide des tests suivants :
>>> est_multiple_3(5029) False >>> est_multiple_3(5027) False >>> est_multiple_3(5028) True