Vous êtes sur la page 1sur 7

TD 1 Structures conditionnelles corrigé

September 26, 2022

Corrigé
Le but de cette séance est de travailler avec les structures conditionnelles de Python.
La première partie se fait sur feuille (sans exécuter les programmes). Pour la suite, vous pouvez
utiliser un notebook ou l’éditeur Spyder.

1 Exercices sans ordinateur


1.1 Affectations
Indiquer (sans exécuter le programme) ce que valent les variables var_x et var_y à la fin des
programmes suivants :
[1]: var_x = 11
var_y = 4
var_x = var_y
var_y = var_x
print(var_x,var_y)

4 4

[2]: var_x = 11
var_y = 4
var_x = var_y
var_y = var_x
print(var_x,var_y)

4 4

[3]: var_x = 11
var_y = 4
temp = var_x
var_x = var_y
var_y = temp
print(var_x,var_y)

4 11

1
[4]: var_x = 5
var_y = 6
var_x = var_x + var_y
var_y = var_x - var_y
var_x = var_x - var_y
print(var_x,var_y)

6 5

1.2 La structure if … else


Indiquer (sans ordinateur) ce que va afficher chacun des programmes suivants si on l’exécute :

[5]: var_a = 12
if var_a > 10 :
print('oui')
print('non')

oui
non

[6]: var_a = 3
var_b = 4
if var_a > var_b:
print(var_b)
else :
print(var_a)

[7]: var_a = 9
if var_a < 5:
var_a = 20
elif var_a < 98 :
var_a = 697
elif var_a < 1000 :
var_a = 1
else :
var_a = 10
print(var_a)

697

1.3 La boucle while


Indiquer (sans ordinateur) ce que va afficher chacun des programmes suivants si on l’exécute :

2
[8]: var_1 = 3
while var_1 < 5 :
var_1 = var_1 + 1
print(var_1)

4
5

[9]: var_1 = 3
while var_1 < 5 :
print(var_1)
var_1 = var_1 +1

3
4

[10]: var_a = 0
var_b = 2
while var_b < 11 :
if var_b % 2 == 0 :
var_a = var_a + 1
else :
var_a = var_a + 2
var_b = var_b + 1
print(var_a)

13

2 Programmes à faire en Python


2.1 Une calculatrice basique
Ecrire un programme qui demande à l’utilisateur de donner deux entiers a et b. Le programme
doit calculer puis afficher les quantités suivantes :
• la somme de a et de b,
• la produit de a et de b,
• quotient de b par a,
• le reste de b par a,
• le résultat de ab .
[ ]: var_a = (int(input('Donnez la valeur de a : ')))
var_b = (int(input('Donnez la valeur de b: ')))
somme = var_a + var_b
produit = var_a * var_b
quotient = var_b//var_a

3
reste = var_b%var_a
apb = var_a**var_b
print('La somme de a et b est : ' + str(somme))
print('Le produit de a et b est : ' + str(produit))
print('Le quotient de la division entière de b par a est : ' + str(quotient))
print('Le reste de la division entière de b par a est : ' + str(reste))
print('a puissance b donne : ' + str(apb))

2.2 Conversion
Ecrire un programme qui demande à l’utilisateur de donner un nombre de seconde, puis qui convertit
ce nombre en heures, minutes secondes et affiche le résultat.
[1]: valeur = int(input('Donnez la durée en secondes : '))
nb_secondes = valeur%60
nb_minutes = (valeur//60)%60
nb_heures = (valeur//60)//60
print('Cela correspond à ' + str(nb_heures)+' heures, '+ str(nb_minutes) + '␣
,→minutes, '+ str(nb_secondes)+ ' secondes.')

Donnez la durée en secondes : 45


Cela correspond à 0 heures, 0 minutes, 45 secondes.

[ ]:

2.3 Solutions d’un polynome de degré 2


Réaliser un programme qui demande à l’utilisateur de saisir les valeurs a, b et c de l’équation
ax2 + bx + c = 0, puis qui affiche les solutions.
Information : pour calculer une racine carrée en Python, on importe la bibliothèque numpy et on
utilise l’instruction numpy.sqrt().
Exemple :
[ ]: import numpy as np

var_a = float(input('Entrez la valeur de a : '))


var_b = float(input('Entrez la valeur de b : '))
var_c = float(input('Entrez la valeur de c : '))
delta = var_b**2 - 4*var_a*var_c

if delta > 0:
print('Les deux solutions réelles sont :')
print((-var_b-np.sqrt(delta)/(2*var_a)))
print((-var_b+np.sqrt(delta)/(2*var_a)))
elif delta == 0 :
print ('La solution double est : ')
print(-var_b/(2*var_a))

4
else :
print('Les deux solutions imaginaires sont : ')
print(str(-var_b/(2*var_a)),' - i',str(np.sqrt(-delta)/(2*var_a)))
print(str(-var_b/(2*var_a)),'+ i',str(np.sqrt(-delta)/(2*var_a)))

2.4 Soldes dans un magasin


Les soldes dans un magasin se déroulent de la façon suivante : - tout article bénéficie d’une remise
de 10 % du prix initial, - si le client possède la carte du magasin, alors une remise supplémentaire
de 5 euros est effectuée, à condition que le prix initial de l’article soit supérieur ou égal à 30 euros.
Faire un programme qui demande à l’utilisateur si le client a la carte du magasin, puis le prix initial
et qui affiche le prix soldé.
Vérifier que le programme fonctionne : - un prix initial de 25 euros donne un prix soldé de 22,50
euros avec ou sans carte, - un prix initial de 40 euros donne un prix soldé de 36 euros sans carte et
31 euros avec la carte.
[ ]: prix = float(input('Quel est le prix de départ en euros ? '))
carte = input('Le client a-t-il la carte ?')

if carte == 'oui':
if prix >= 30:
prix_final = 0.9*prix - 5
else :
prix_final = 0.9*prix
else :
prix_final = 0.9*prix
print('Le prix final est :')
print(prix_final)

2.5 Table de multiplication


Ecrire un programme qui demande à l’utilisateur d’entrer un entier n compris entre 1 et 10, puisqui
affiche la table de multiplication de cet entier sous la forme suivante :
1 x n = ..
2 x n = ..

10 x n = ..
[ ]: var_n = int(input('Entrez la valeur de n : '))
i = 0

while i <= var_n:


print(str(i),' x ',str(var_n),' =', str(i*var_n))
i = i + 1

5
2.6 Somme des n premiers entiers
Ecrire un programme qui demande à l’utilisateur un nombre entier n strictement positif, puis qui
calcule la somme des entiers compris entre 0 et n (inclus).

[ ]: entier = int(input('Donnez la valeur de n :'))


i = 0
somme = 0
while i <= entier :
somme = somme + i
i = i + 1
print('La somme de tous les entiers compris entre 0 et ',str(entier),' est : ')
print(somme)

3 Pour aller plus loin


3.1 Nombre premier
Un nombre est premier s’il n’est divisible (division entière avec reste nul) que par 1 et lui-même.
Ecrire un programme qui demande à l’utilisateur de saisir un nombre à trois chiffres puis qui affiche
“True” si le nombre est premier et “False” s’il ne l’est pas.
[ ]: nombre = int(input('Donnez le nombre à tester : '))
i = 2
bool = True
while (i < nombre/2 and bool == True) :
j=2
while j <= i :
if nombre%j == 0:
bool = False
j = j + 1
i = i + 1

if bool == True :
print('True')
else :
print('False')

3.2 Deviner un nombre


Le but de cet exercice est de programmer un jeu : - Le programme génère un nombre entier aléatoire
compris entre 1 et 999 (inclus) que le joueur (l’utilisateur va devoir deviner. - A chaque coup, le
joueur entre un nombre et le programme lui répond “C’est plus” ou “C’est moins” selon le cas. -
Lorsque le joueur a trouvé le nombre mystère, le programme lui indique qu’il a gagné ainsi que le
nombre de coups.
Conseil : Il est plus simple de décomposer le problème en plusieurs parties (test de chaque coup,
compteur de coups, génération du nombre aléatoire, etc).

6
Pour générer un nombre aléatoire, on importe la bibliothèque random.
L’instruction random.randint(a,b) génère un entier compris entre a et b (inclus).

[ ]: import random as rd

myst = rd.randint(1,999)
test = 0 # test est initialisé à 0 pour que la boucle se fasse au moins une fois
cpt = 1 # cpt est le compteurs de coups
while test != myst :
demande = int(input('Proposez un nombre compris entre 1 et 999 : '))
if demande == myst:
print('gagné !')
print (str(cpt), 'coups')
test = myst # avec cette instruction, la boucle ne se refera pas
elif demande > myst:
print('Le nombre mystère est plus petit')
else :
print('Le nombre mystère est plus grand')
cpt = cpt + 1 # on augmente le compteur de coups avant de recommencer la␣
,→boucle

Vous aimerez peut-être aussi