Telechargé par Kalifa.konate19

06-while-cor.pdf corro

publicité
PCSI – Lycée Dupuy de Lôme – 2019/2020
B OUCLES FOR ET WHILE - C ORRIGÉ
Exercice 1
Quelle est la valeur de la variable s à la suite de ces instructions ? On complètera le tableau.
s
0
1
1
5
5
s =0
q =21
i =4
while q !=0 and i>0 :
s = s +( q %2)*2**(4 - i )
q = q //2
i =i -1
print ( s )
q
21
10
5
2
1
i
4
3
2
1
0
arrêt
s =5
Exercice 2
1. Écrire un programme qui demande de saisir un entier naturel non nul n et qui affiche le produit
P n = 1 × 2 × 3 × · · · × n.
n = int ( input ( ’ Saisir un entier n ’ ))
P =1
for k in range (1 , n +1):
P=P*k
print ( ’P = ’ ,P )
2. Écrire un programme qui calcule la plus petite valeur de n pour laquelle le produit P n est supérieur
ou égal à 1000 ?
# initialisation
n =1
P =1
# boucle while
while P <1000:
n = n +1
P=P*n
print ( ’n = ’ ,n )
Exercice 3
(n + 2)
Soit (Q n ) la suite définie par Q 0 = 1 et Q n+1 =
Q n pour tout n ∈ N.
2
1. Écrire un programme qui demande de saisir un entier n et affiche la valeur de Q n .
n = int ( input ( ’ Saisir un entier n ’ ))
Q =1
for k in range ( n ):
Q = Q *( n +2)/2
print ( ’Q = ’ ,Q )
1
PCSI – Lycée Dupuy de Lôme – 2019/2020
2. Écrire un programme qui calcule la plus petite valeur de n pour laquelle Q n est supérieur ou égal
à 1000.
# initialisation
n =0
Q =1
# boucle while
while Q <1000:
Q = Q *( n +2)/2
n = n +1
print ( ’n = ’ ,n )
Exercice 4
1. Écrire un programme qui demande un entier naturel et affiche toutes les puissances de 2 qui sont
inférieures ou égales à ce nombre.
n = int ( input ( ’n = ’ ))
# initialisation
p =1 # 2**0
# boucle while
while p <= n :
print (n , ’ est inf é rieur ou é gal à ’ ,p )
p =2* p
2. Modifier le programme précédent pour qu’il affiche uniquement la valeur de la plus grande puissance de 2 qui soit inférieure ou égale à ce nombre.
n = int ( input ( ’n = ’ ))
# initialisation
p =1 # 2**0
# boucle while
while p <= n :
p =2* p
print ( p //2)
Exercice 5
Le but de cet exercice est de (re)programmer la commande element in liste permettant de savoir
si un élément appartient à une liste donnée. On n’utilisera donc pas x in L.
1. Écrire un programme qui demande de saisir un réel x puis affiche si celui-ci appartient à la liste
L=[1,2,5,6,-2,0,5,4,8,-1] ou non.
L = [1 ,2 ,5 ,6 , -2 ,0 ,5 ,4 ,8 , -1]
x = float ( input ( ’x = ’ ))
test = 0 # variable é gale à 1 si x est dans L et é gale à
0 sinon .
for k in range ( len ( L )):
if L [ k ] == x :
test = 1
# Pour terminer on regarde si test vaut 0 ou 1
2
PCSI – Lycée Dupuy de Lôme – 2019/2020
if test == 1 :
print ( " x appartient à L " )
else :
print ( " x n ’ appartient pas à L " )
2. Modifier ce programme pour qu’il affiche, si x appartient à la liste, le numéro d’une place occupée
par x (la première rencontrée).
L = [1 ,2 ,5 ,6 , -2 ,0 ,5 ,4 ,8 , -1]
x = float ( input ( ’x = ’ ))
# On va faire un boucle while pour s ’ arr ê ter au 1 er x
k = 0
while k < len ( L ) and L [ k ] != x :
k = k +1
# Si k = len ( L ) à la fin , c ’ est qu ’ on a parcouru toute la liste sans succ è s .
if k == len ( L ) :
print (x , " n ’ appartient pas à la liste " )
else :
print (x , " est pr é sent en position " , k )
3. Écrire un programme qui demande de saisir un réel x puis affiche le nombre d’occurence de x
dans la liste L précédente.
x = float ( input ( ’x = ’ ))
compteur =0
for a in L :
if a == x :
compteur = compteur +1
print (x , ’ est pr é sent ’ , compteur , ’ fois ’)
Exercice 6
Bonus - Jeu de Nim
Le but de cet exercice est de programmer le jeu de Nim (ou jeu des bâtons). Au début, on dispose de 20
bâtons alignés. Les deux joueurs vont, à tour de rôle, enlever 1, 2 ou 3 bâtons. Le joueur qui laisse 1
bâtons à la fin a gagné.
1. On définit une variable joueur égale à 1 ou 2 (numéro du joueur dont c’est le tour). Écrire une
commande d’une ligne permettant de passer d’un joueur à l’autre :
• si joueur=1, alors joueur prend la valeur 2 ;
• si joueur=2, alors joueur prend la valeur 1.
joueur = joueur %2+1
3
PCSI – Lycée Dupuy de Lôme – 2019/2020
2. Programmer le jeu. À chaque tour, on affichera ’Joueur 1’ ou ’Joueur 2’ puis on lui demandera
de saisir le nombre de bâtons qu’il souhaite enlever et enfin le nombre de bâtons restant. Le jeu
s’arrête quand il reste un seul bâton. On affichera le numéro du perdant et le numéro du gagnant.
# programme fonctionnant si les propositions des joueurs sont coh é rentes .
joueur =1
batons =20
print ( ’ Il y a ’ , batons , ’b â tons ’)
while batons>1 :
print ( ’ Joueur ’ , joueur )
N = int ( input ( ’ Combien enlevez - vous de batons (1 ,2 ou 3)? ’ ))
batons = batons - N
print ( ’ Il reste ’ , batons , ’b â tons ’)
joueur = joueur %2+1
print ( ’ Joueur ’ , joueur , ’a perdu ’)
print ( ’ Joueur ’ , joueur %2+1 , ’a gagn é ’)
4
Téléchargement