Aller au contenu

Feuille d'exercices sur Python (pour les élèves de spécialité mathématiques)

Exercice 1

On considère la fonction suivante, où \(n\) est un entier naturel:

1
2
3
4
def prog(n):
    while n>10:
        n=n-10
    return n
  1. Quelle est la valeur affichée en sortie par cet algorithme pour \(n = 11\) ?

  2. Quelle est la valeur affichée en sortie par cet algorithme pour \(n = 35\) ?

  3. Quelle est la valeur affichée en sortie par cet algorithme pour \(n = 40\) ?

Corrigé
  1. La valeur retournée est 1
  2. La valeur retournée est 5
  3. La valeur retournée est 10

Exercice 2

On considère le programme suivant, où S est un nombre décimal :

1
2
3
4
5
6
def annee(S):
    n=0
    while S<8000:
        S=S*1.05
        n=n+1
    print(n,S)
  1. Appliquer ce programme pour \(S = 6500\).

    On place 6500€ à intérêts composés au taux semestriel de 5%.

  2. Au bout de combien de semestres le capital acquis sera-t-il de plus de 8000€

  3. Que faut-il modifier dans le programme pour déterminer au bout de combien de semestres le capital acquis dépassera 10000€ ?

Corrigé
  1. Il retourne \(n=5\) et \(S \approx 8295.83\)

  2. Au bout de 5 semestres le capital acquis dépassera 8000€.

  3. On remplace la troisième ligne par while S<10000.

Exercice 3

On considère le programme suivant:

1
2
3
4
5
6
7
8
9
a=0
b=1
k=1
while k<=5:
    u=a+b
    a=b
    b=u
    k=k+1
print(u)
  1. Que fait ce programme ? L'exécuter et préciser le résultat final affiché (on mettra le détail des étapes et les résultats intermédiaires en les présentant dans un tableau par exemple).

  2. Proposer une relation de récurrence permettant d'expliquer ce que ce programme permet de calculer.

Corrigé
  1. Au départ \(a=0\), \(b=1\) et \(k=0\).

    Le tableau donne les valeurs des variables à la fin de chaque exécution de la boucle while.

    Au départ \(a=0\), \(b=1\) et \(k=0\).

    \(u\) \(a\) \(b\) \(k\)
    1 1 1 2
    2 1 2 3
    3 2 3 4
    5 3 5 5
    8 5 8 6
  2. On reconnaît la suite de Fibonacci. \(u_{n+2}=u_{n+1}+u_{n}\).

Exercice 4

La suite \((u_n)\) est définie pour tout entier naturel \(n\) non nul.

La fonction ci-dessous permet de calculer son terme d'indice \(n\).

1
2
3
4
5
6
def terme(n):
    u=n
    for i in range(1,n+1):
        u=u+i(i-1)
    u=u*(1/n)
    return u
  1. Faire tourner la fonction pour \(n = 3\). Remplir un tableau décrivant l'évolution de \(u\). Que vaut \(u_3\) ?

  2. MĂŞme chose pour \(n = 4\).

  3. Exprimer le terme général de \(u_n\) en fonction de \(n\) sous forme d'une somme.

  4. a. Un tableur fournit les 9 premiers termes de la suite \((u_n)\).

    \(n\) \(1\) \(2\) \(3\) \(4\) \(5\) \(6\) \(7\) \(8\) \(9\)
    \(u_n\) 0 1 2.67 5 8 11.67 16 21 26.67
    \(3u_n\) 0 3 8 15 24 35 48 63 80

    À l'aide de la troisième ligne, donnant les 9 premières valeurs de \(3u_n\), conjecturer l'expression de \(u_n\) en fonction de \(n\).

    b. Montrer que pour tout \(n \in \mathbb{N}\), \(u_{n+1}=\dfrac{1}{n+1} \times (nu_n+n(n+1))=\dfrac{nu_n}{n+1}+n\).

    c. Démontrer par récurrence la conjecture du a.

Corrigé
  1. Avant la boucle for, i n'est pas affecté et u vaut 3.

    |u|i| |3|1| |5|2| |11|3|

    À la fin du programme, on retourne \(u_3=\dfrac{11}{3}\).

  2. Avant la boucle for, i n'est pas affecté et u vaut 4.

    |u|i| |4|1| ||| ||| |||

Exercice 5

  1. Soit \(f\) la fonction définie par \(f(x)=x^3-3x^2+2\).

    a. Étudiez le sens de variation de \(f\).

    b. Calculer \(f(-20)\) et \(f(30)\).

    c. DĂ©terminer le nombre de solutions de l'Ă©quation \(f(x)=0\) (Justifier).

  2. Programme

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    a=float(input("Entrez la borne gauche"))
    b=float(input("Entrez la borne droite"))
    
    if f(b)*f(a)<=0:
        while b-a>10**(-5):
            if f((a+b)/2)*f(a)<=0:
                b=(a+b)/2
            else:
                a=(a+b)/2
    print(a,b)
    

    a. Qu'implique la condition f(b)*f(a)<=0 sur \(f(b)\) et \(f(a)\) ?

    b. Que représente \(\dfrac{a+b}{2}\) par rapport à \(a\) et \(b\) ?

    c. Que fait ce programme ?

    d. L'Ă©crire sur une calculatrice ou un ordinateur

    e. Que se passe-t-il si l'utilisateur entre les valeurs \(a=-20\), \(b=30\) ? \(a=-20\) et \(b=3\) ? \(a=0\) et \(b=3\) ?

Exercice 6

Soit le programme:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
h=0.1
x=0
maxi=0
while x<1:
    x=x+h
    y=x*sqrt(1-x**2)
    if y>maxi:
        maxi=y
        c=x
print(c,maxi)
  1. À quelle ligne peut-on lire la fonction utilisée ?

  2. Que fait ce programme ? À quoi correspondent c et maxi?

  3. Sans exécuter ce programme, indiquer le couple de valeurs obtenu.

  4. Quelle ligne du programme doit-on modifier pour étudier la fonction définie par \(f(x)=x\ln{x}-x\) ?

  5. Soit la fonction définie sur \([-1;1]\) par \(f(x)=x\sqrt{1-x^2}\). Étudier le sens de variation de cette fonction.

    Le résultat obtenu par le programme est-il cohérent avec les résultats théoriques ?

Corrigé
  1. Ă  la ligne 6

  2. Ce programme retourne le maximum de la fonction \(f(x)=x\sqrt{1-x^2}\) sur l'intervalle \([0;1]\), ainsi que son abscisse.

  3. Le programme retourne \(0.7\) et \(f(0.7) \approx 0.499899\).

  4. On doit remplacer y=x*sqrt(1-x**2) par y=x*ln(x)-x.

  5. Des maths faciles !

Exercice 7

Soit la fonction \(f\) définie sur \(\mathbb{R}\) par \(f(x)=4e^{0.5x}-5\).

On considère le programme en Python suivant:

1
2
3
4
5
6
7
def test(p):
    x=0
    y=-1
    while y<0:
        x=x+p
        y=f(x)
    return (x-p,x)

a. On entre une valeur de \(p\) égale à \(0.1\). Quelles sont les valeurs affichées en sortie ?

b. On a fait fonctionner le programme avec une certaine valeur de \(p\) et on a obtenu en sortie les nombres \(0.44\) et \(0.45\). Quelle valeur de \(p\) avait-on choisie en entrée ?

c. On entre une valeur de \(p\) égale à \(0.001\). Quelles sont les valeurs affichées en sortie ?

Exercice 8

On suppose que l'on dispose d"une fonction \(f\) continue sur \(\mathbb{R}\), de deux valeurs \(a\) et \(b\) réelles telles que \(a<b\) et d'un nombre réel \(p\).

On considère alors le programme en Python suivant:

1
2
3
4
5
s=a
while s<b:
    if f(s)*f(s+p)<0:
        print(s)
    s=s+p
  1. Prévoir ce que ce programme va afficher pour \(f(x)=3x-1\), \(a=0\), \(b=1\) et \(p=0.1\).

  2. On suppose dans cette question que l'on a \(f(x)=3x-1\), \(a=0\), \(b=1\) et \(p=0.1\).

    a. Pourquoi ce programme s'arrête-t-il toujours ? Peut-on prévoir le nombre maximal d'étape qu'il aura à accomplir ?

    b. Expliquer pourquoi il n'y a qu'une seule valeur affichée par ce programme. Pour quelle(s) valeur(s) de \(p\) affiche-t-il \(0.2\) ? Peut-il afficher \(0.1\) ?

  3. Expliquer ce que permet d'afficher ce programme en général. (\(f\),\(a\) et \(b\) étant quelconques).

Exercice 9

Dans un lycée, un code d'accès à la photocopieuse est attribué à chaque professeur. Ce code à quatre chiffres choisis dans la liste [0,1,2,3,4,5,6,7,8,9], chaque chiffre pouvant être répété à l'intérieur d'un même code. Exemples: \(0027\) et \(4879\).

  1. Combien de codes sont possibles ?

  2. Ce code permet aussi de définir un identifiant pour l'accès au réseau informatique. L'identifiant est constitué du code précédent (noté \(n\)) et d'une clé calculée avec le programme ci-dessous:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
p=n
s=0
k=1
while k<=4:
    u=p%10
    k=k+1
    s=s+k*u
    p=(p-u)//10
r=s%7
c=7-r
print(c)

Quel est l'identifiant associé au code 2282 ?

Exercice 10

DĂ©terminer le nombre afficher en sortie du programme ci-dessous, si on le fait fonctionner pour \(n=3\).

1
2
3
4
5
6
7
8
i=0
a=0
b=0
while i<n:
    i=i+1
    a=46+a
    b=a+b
print(b)

Exercice 11

On considère la fonction suivante:

1
2
3
4
5
6
7
8
9
u=1
S=1
i=0
while i<n:
    u=2u+1-i
    S=S+u
    i=i+1
print(u)
print(S)
  1. Justifier que, pour \(n=3\), l'affichage obtenu est \(11\) pour \(u\) et \(21\) pour S.

  2. Reproduire et compléter le tableau suivant :

Valeur de \(n\) \(0\) \(1\) \(2\) \(3\) \(4\) \(5\)
Affichage pour \(u\) \(11\)
Affichage pour \(S\) \(21\)

Exercice 12

Voici un programme qui permet de réaliser une simulation:

1
2
3
4
5
6
7
L=[0,0,0,0,0,0]

for i in range(n):
    d=random.randint(1,6)
    L[d-1]=L[d-1]+1

print(L)
Décrire l'expérience que permet de simuler ce programme.

Corrigé

Ce programme permet de simuler n fois le lancer d'un dé et retourne une liste qui contient le nombre de fois que le 1 est obtenu, le nombre de fois que le 2 est obtenu, le nombre de fois que le 3 est obtenu,...

Exercice 13

Soit le programme suivant:

1
2
3
4
5
6
L=[-12,-3,5,18,-15,0,17,-23]
R=[]
for i in range(len(L)):
    if L[i]>=0:
        R.append(L[i])
print(R)

Expliquer le fonctionnement de ce programme et donner ce qu'il affiche.

Corrigé

Ce programme teste si chaque élément de la liste L est positif et stocke cet élément dans la liste R si c'est le cas.