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).