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%10etn//10dans 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'entiernentré 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 :
7est le chiffre de poids 0 ;4est le chiffre de poids 1 ;5est le chiffre de poids 2.
Travail à faire☘
-
Complétez le corps de la fonction
chiffre_poids()qui doit renvoyer le chiffre de poidskde 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 boucleforafin 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'entiernsaisi en paramètre. Si cette somme n'est pas compris entre0et9, on calcule alors la somme des chiffres de cette somme... et ainsi de suite jusqu'à obtenir un résultat entre0et9, à 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