Travaux pratiques 2 : Les structures de contr^ole

publicité
HLPH609
Programmation pour la physique , Faculte des Sciences de Montpellier, 2017
Travaux pratiques 2 : Les structures de contr^
ole
Exercice 2.1 : Priorite des operations
Eliminer
les parentheses superues dans les expressions suivantes :
(a +
(-a)
(2 *
(x /
(x +
(x /
b) - (2 * c)
/ (-(b + c))
x) / (y * z)
y) % (-z)
3) * (n % p)
(y % z) > 0) and (z < 0)
Exercice 2.2 : La structure conditionnelle
(a) Realiser un script qui invite l'utilisateur a entrer un jour et un mois par le clavier. Puis,
le programme determinera le jour de la semaine en 2017. Exemple :
Entrez un jour (1-31): 26
Entrez un mois (1-12): 12
Le 26/12/2017 est un mardi.
(b) Realiser un script qui teste qu'une annee (qui sera entree au clavier par l'utilisateur) est
bissextile. On rappelle que les annees bissextiles reviennent tous les 4 ans, sauf les annees
seculaires, si celles-ci ne sont pas multiples de 400. Ainsi, 1900 n'etait pas une annee
bissextile, alors que 2000 l'etait.
(c) Realiser un script qui lit trois nombres ottants a, b, c du clavier et qui ache le nombre
des solutions reelles x de l'equation ax2 + bx + c = 0. (Il n'y a pas besoin de calculer leurs
valeurs. Attention aux cas speciaux !)
Exercice 2.3 : Les boucles
(a) Realiser un script qui demande a l'utilisateur de deviner un nombre (qui sera entre par le
clavier) et ne termine pas avant d'avoir eu la bonne reponse, 42. Utiliser une boucle while.
(b) Realiser un script qui lit un entier naturel n du clavier, teste que n 0, et calcule n! avec
une boucle for.
(c) Realiser un script qui ache toutes les factorielles des nombres entiers entre 0 et 20 avec
deux boucles for imbriquees. Exemple :
0!
1!
2!
3!
4!
...
=
=
=
=
=
1
1
2
6
24
20! = 2432902008176640000
(d) Realiser un script qui lit un nombre positif k du clavier, teste que k > 0, et ache tous
les elements fi de la suite de Fibonacci inferieurs a k. (Denition : f0 = 0, f1 = 1, et
fn+2 = fn+1 + fn 8 n 2 N).
(e) Examinez le programme suivant et devinez son objectif. Puis, trouvez et corrigez les erreurs
dans le code.
# !/ usr / bin / python3
# Ex10_Primes . py
# Un script fautif a corriger
while True :
user_input = input ( ' Entrez un nombre entier > 1: ')
try :
n = int ( user_input )
if n > 1:
break
else
print ( 'Ce nombre n\' est pas plus grand que 1! ')
except ValueError :
print ( ' Impossible de convertir en nombre entier ! ')
for i in ragne (2 , n):
if n % i = 0:
print (n , 'n ' est pas premier : ', n , '= ', i , '* ', n // i)
else :
print (n , ' est premie r ')
(f) Realiser un script qui lit une phrase phrase et une seule lettre lettre du clavier et qui
ache l'indice de la premiere occurrence de lettre dans phrase. Si lettre ne gure pas
dans phrase, le programme terminera avec un RuntimeError.
(g) Realiser un script qui lit un mot mot du clavier et qui indique ensuite si mot est un
palindrome (un mot dont l'ordre des lettres reste le m^eme qu'on le lise de gauche a droite
ou de droite a gauche).
Indication : pour obtenir la longueur d'une cha^ne de caracteres chn, utiliser la commande
len(chn).
(h) Realiser un script qui lit un nombre entier n du clavier et calcule la somme des chires s
de n. Ensuite, tant que s > 9 le calcul est repetee avec s a la place de n.
Exercice 2.4 : Les exceptions
(a) Realiser un script qui invite l'utilisateur a entrer un nombre non nulle par le clavier, et
puis ache son inverse. Si par contre la saisie ne peut pas ^etre convertit en float, ou
est \0", le programme achera un message d'erreur speciant le probleme et repete la
procedure. Utilisez une structure try ... except.
(b) Realiser un script qui invite l'utilisateur a entrer une cha^ne de caracteres par le clavier
et puis calcule la somme de tous les chires la-dedans. Exemple :
Entrez quelque chose: bZ6 v231u
La somme est 12.
Indications : Vous pouvez vous servir d'une boucle for, d'une structure try ... except
et de la commande pass (qui fait. . . rien du tout, mais qui vous sera toutefois utile ici).
Téléchargement