0% ont trouvé ce document utile (0 vote)
5 vues2 pages

Boucles et récursions en Python

Ce document présente plusieurs exercices de programmation en Python concernant les boucles while, les récursions, les factorielles, les logarithmes entiers, les racines carrées et la représentation binaire et la décomposition en facteurs premiers des nombres. Les exercices proposent d'écrire diverses fonctions pour résoudre ces problèmes mathématiques.

Transféré par

Clo Gueus
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)
5 vues2 pages

Boucles et récursions en Python

Ce document présente plusieurs exercices de programmation en Python concernant les boucles while, les récursions, les factorielles, les logarithmes entiers, les racines carrées et la représentation binaire et la décomposition en facteurs premiers des nombres. Les exercices proposent d'écrire diverses fonctions pour résoudre ces problèmes mathématiques.

Transféré par

Clo Gueus
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

Programmation impérative en Python — Travaux dirigés

Séance 2 : Boucles while et récursions

L1 – Université Côte d’Azur

Exercice 1 — Factorielles (⋆)

Écrivez une fonction fact(n) qui renvoie 𝑛!, la factorielle de 𝑛 :


1. en utilisant une récurrence ;
2. en utilisant une boucle while.

Exercice 2 — Affichage de factorielles (⋆)

1. Écrivez une fonction affiche_facts(n) qui affiche sur 𝑛 lignes les entiers 1!, 2!, 3!, …, 𝑛!.
2. Si vous avez utilisé la fonction fact(n) précédente, combien de multiplications sont effectuées par votre code
lorsque vous exécutez affiche_facts(n) ?
3. Proposez une solution utilisant moins de multiplications.

Exercice 3 — Logarithme entier (⋆)

Soit 𝑛 un entier positif. On appelle logarithme entier de 𝑛 l’entier le(n) correspondant au nombre de fois où il faut
diviser 𝑛 par deux avant d’atteindre 1 ou 0. Par exemple, le(5) = 1 + le(2) = 1 + (1 + le(1)) = 2. Écrivez une fonction
le(n) qui renvoie le logarithme entier de n.

Exercice 4 — Partie entière de la racine carrée (⋆)

Soit 𝑛 un entier positif. La partie entière de la racine carrée de 𝑛, notée ⌊√𝑛⌋, est le plus grand entier 𝑘 tel que 𝑘 2 ≤ 𝑛.
Écrivez une fonction int_sqrt(n) qui renvoie la partie entière de la racine carrée de n.

Complément sur la fonction print


Par défaut, la fonction print affiche un caractère espace entre chacun de ses arguments et termine en allant à la ligne
à la fin. Deux paramètres optionnels de la fonction print permettent de modifier ce comportement par défaut : sep et
end. Par exemple, le programme

1 print('Comportement','par','defaut.',sep=' ',end='\n')
2 print('Sur','une','seule','ligne','avec','des','tirets',sep='-',end='')
3 print('.\n','Nouvelle ligne','.')
affiche
1 Comportement par defaut.
2 Sur-une-seule-ligne-avec-des-tirets.
3 Nouvelle ligne .
Le caractère '\n' est un caractère de contrôle qui lorsqu’il est affiché provoque un passage à la ligne. Dans la deuxième
instruction print, on a remplacé le caractère de fin '\n' par '' : print ne va pas à la ligne.

1/2
Programmation impérative en Python TD 2 L1 — Université Côte d’Azur

Complément sur les chaînes de caractères


On peut convertir un entier en chaîne de caractères : str(42) == '42'. Réciproquement, on peut convertir une chaîne
de caractères en entier : int('42') == 42. Pour concaténer deux chaînes de caractères, on utilise l’opérateur +. On a
par exemple 'caram' + 'bolage' == 'carambolage' ; ce + n’a rien à voir avec l’addition sur les entiers : '2' +
'3' vaut '23', mais pas '3' + '2'.

Exercice 5 — Écriture binaire (⋆⋆– ⋆ ⋆ ⋆)

1. Écrivez une fonction affiche_calcul_binaire(n) qui affiche le calcul de la représentation binaire de n, de sorte
que l’on peut lire verticalement la représentation en binaire de 𝑛. Par exemple, pour 13 = (1101)2 , on obtiendra
dans le Shell :
1 >>> affiche_calcul_binaire(13)
2 1 ( 13 = 2 × 6 + 1 )
3 0 ( 6 = 2 × 3 + 0 )
4 1 ( 3 = 2 × 1 + 1 )
5 1
2. Écrivez une fonction récursive affiche_binaire(n) qui affiche l’écriture binaire de 𝑛 dans le sens de lecture
usuel. Par exemple, on doit obtenir :
1 >>> affiche_binaire(13)
2 1101
3. Écrivez cette fonction en utilisant une boucle while.

Exercice 6 — Décomposition en facteurs premiers (⋆ ⋆ ⋆)

Écrivez une fonction affiche_facteurs(n) qui affiche la liste des facteurs premiers avec multiplicité de n. Par exemple,
affiche_facteurs(1176) affichera
1 >>> affiche_facteurs(1176)
2 2**3 3**1 7**2
Astuce : on pourra définir des sous-fonctions pour rendre le programme plus lisible.

2/2

Vous aimerez peut-être aussi