TP PYTHON - 01 1. PYZO? PYTHON? Le logiciel PYZO permet de réaliser des programmes informatiques écrits avec le langage PYTHON.



Documents pareils
TP 1. Prise en main du langage Python

Initiation à la programmation en Python

Présentation du langage et premières fonctions

Découverte de Python

STAGE IREM 0- Premiers pas en Python

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et Programmation, IMA

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

L informatique en BCPST

1 Recherche en table par balayage

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Chapitre 2 Devine mon nombre!

Python - introduction à la programmation et calcul scientifique

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Utilisation d objets : String et ArrayList

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Représentation d un entier en base b

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et programmation : les bases (VBA) Corrigé

Le langage C. Séance n 4

Introduction à MATLAB R

IV- Comment fonctionne un ordinateur?

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Recherche dans un tableau

TD3: tableaux avancées, première classe et chaînes

Introduction à l informatique en BCPST

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours 7 : Utilisation de modules sous python

Solutions du chapitre 4

Langage Java. Classe de première SI


1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

2 Comment fonctionne un ordinateur, dans les grandes lignes

TP, première séquence d exercices.

I. Introduction aux fonctions : les fonctions standards

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

DM 1 : Montre Autoquartz ETA

Cours d algorithmique pour la classe de 2nde

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

INF 321 : mémento de la syntaxe de Java

Notions fondamentales du langage C# Version 1.0

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Chapitre I Notions de base et outils de travail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Représentation des Nombres

Licence Sciences et Technologies Examen janvier 2010

Poker. A rendre pour le 25 avril

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

V- Manipulations de nombres en binaire

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

LES DECIMALES DE π BERNARD EGGER

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Compléments de documentation Scilab : affichage de texte et formatage de nombres

I00 Éléments d architecture

Bases de programmation. Cours 5. Structurer les données

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

EXCEL TUTORIEL 2012/2013

TP 1 Prise en main de l environnement Unix

Corrigé des TD 1 à 5

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Rappels Entrées -Sorties

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Conventions d écriture et outils de mise au point

Maple: premiers calculs et premières applications

Initiation à la Programmation en Logique avec SISCtus Prolog

Activité 4. Tour de cartes Détection et correction des erreurs. Résumé. Liens pédagogiques. Compétences. Âge. Matériels

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Initiation à LabView : Les exemples d applications :

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Initiation à l algorithmique

TP1 - Prise en main de l environnement Unix.

1 Lecture de fichiers

Comment mettre en page votre livre

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Création et Gestion des tables

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction au langage C

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Manuel du gestionnaire

Cours 1 : La compilation

1 TD 2 : Construction d'une chier Acrobat et envoi par

MIS 102 Initiation à l Informatique

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control


Chap III : Les tableaux

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Transcription:

Lycée Thiers TP PYTHON - 01 Ce premier TP nous donnera un aperçu de l environnement de travail PYZO et survolera quelques aspects fondamentaux du langage PYTHON (dans sa version 3.3.0). Le but du jeu est de mettre rapidement à notre disposition des rudiments de syntaxe qui soient suffisants pour envisager à très court terme l écriture de petits programmes. Dans chacune des sections ou sous-sections qui suivent, on trouvera trois types d activité : il s agira parfois simplement de recopier les commandes indiquées et d observer les réponses du système. A d autres moments, quelques questions permettront de faire le point sur les notions rencontrées antérieurement. Enfin, il pourra être demandé d écrire en Python quelques instructions simples répondant à des spécifications imposées. A tout moment, si vous êtes en panne où si le système réagit d une façon que vous ne comprenez pas, n hésitez pas à demander de l aide... 1. PYZO? PYTHON? Le logiciel PYZO permet de réaliser des programmes informatiques écrits avec le langage PYTHON. PYZO est multi-plateforme, ce qui signifie qu il fonctionne aussi bien avec les systèmes d exploitation Microsoft Windows, Mac OSX ou encore Linux. On peut le télécharger à l adresse http ://www.pyzo.org/downloads.html Au lancement de PYZO, apparaît une fenêtre partagée en deux zones. La zone du haut, appelée console (shell en anglais), est celle où l on pourra travailler de façon interactive avec l interpréteur PYTHON. La zone du bas est un éditeur de texte, spécialement conçu pour écrire des programmes dans le langage PY- THON. L intérêt de l éditeur va rapidement apparaître, dès lors qu on se mettra à écrire des programmes ne se réduisant pas à une seule ligne de code. Et surtout, l éditeur nous servira à sauvegarder notre travail dans un fichier, ou bien à charger un tel fichier depuis le disque (ou depuis une clef USB) pour reprendre le développement d un programme là où nous l avions laissé. 2. Où l on découvre l existence de quelques classes... Les divers objets que le langage Python nous permet de manipuler sont répartis au sein de diverses catégories appelées classes. Ce qui suit va nous permettre de faire connaissance avec quelques unes des principales classes. Dans un premier temps, nous utiliserons seulement la console : il sera donc plus confortable pour le moment de réduire au minimum la taille de l éditeur.

TP PYTHON - 01 2 2.1. Les classes int et float. Les plupart des quantités numériques que nous manipulerons sont soit des nombres entiers (que le système sait manipuler de façon exacte et sans limitation de taille) soit des nombres décimaux (qui sont représentés en machine de façon approchée). La classe int (on dit aussi le type int) permet de représenter les nombres entiers. La classe float (pour floating point numbers : nombres en virgule flottante) permet, quant à elle, de représenter des nombres décimaux. Commençons par un aperçu de la classe int... Saisir successivement les expressions suivantes dans la console (et valider chaque fois avec la touche ENTREE ). Observer attentivement les réponses du système. Attention : les >>> ne sont pas à taper! Ce symbole est l invite du système (aussi appelé prompt ). >>> 2+5 >>> 2 + 5 >>> 2 + 5 # Hello :) >>> 10 - (3 + 4) >>> 3 * 7 >>> 2 ** 10 >>> 20 // 7 >>> 20 % 7 >>> type(125) [Qu. 1] Quelle remarque peut-on formuler en comparant les deux premières expressions? [Qu. 2] Quel est le rôle vraisemblable du caractère # (troisième expression)? [Qu. 3] On dit que les symboles +, -, *, **, // et % sont des symboles d opérateurs binaires. Qu indique cet adjectif binaires? [Qu. 4] A faire de tête avant de taper quoi que ce soit : quel serait le résultat de l évaluation de l expression 100 // 7? Même question pour 100 % 7. Notes : 1) Pour des raisons de lisibilité, il est recommandé de placer deux espaces autours de chaque symbole d opération binaire : un espace juste avant et un juste après. 2) La fonction type est la première fonction que nous rencontrons. Essayer et observer...

TP PYTHON - 01 3 >>> 1 / 8 >>> 2 ** (1 / 2) >>> type(3.2) >>> 1/3 + 1/3 + 1/3 + 1/3 + 1/3 + 1/3 [Qu. 5] Comparer brièvement, grâce aux exemples précédents, les rôles des opérateurs binaires / et // [Qu. 6] Qu obtient-on en évaluant (125 // 8) * 8? Même question pour (125 / 8) * 8 [Qu. 7] Que doit-on penser du résultat de l évaluation de la dernière expression? [Qu. 8] Quelle est la classe (le type) de l expression 1 + 2 + 3 + 4.0? 2.2. La classe bool. Cette classe ne comporte que deux valeurs, notées True et False. Les opérateurs and, or, not permettent de construire des expressions booléennes variées. Ils peuvent être combinés avec les opérateurs binaires de comparaison, à savoir : ==, <, >, <=, >=,!= Essayer et observer... >>> True or False >>> True and False >>> 1 < 10 >>> not (1 < 10) >>> 3 == 1 + 2 >>> (3 == 1 + 2) == True >>> 2 * 6!= 3 * 4 >>> 0.14285714285714285 == 1/7 [Qu. 9] Quel serait le résultat de l évaluation de 3 < 3? Et de 3 <= 3? [Qu. 10] Quel serait le résultat de l évaluation de (2 > 0) and not (32 % 8 == 0)? [Qu. 11] Qu obtient-on en évaluant l expression type(3) == type(3.0)? [Qu. 12] Que doit-on penser du résultat de l évaluation de la dernière expression?

TP PYTHON - 01 4 3. Premier contact avec des variables Grosso modo, une variable peut être considérée comme un nom faisant référence à une case mémoire. L expression «référence d objet»est aussi utilisée avec le même sens que le mot «variable». La valeur contenue dans cette case mémoire est susceptible d être lue et / ou modifiée. Essayer et observer... >>> x = 7 >>> (x + 3) ** 2 >>> y = 2 * x + 1 >>> y >>> x = 0 >>> y >>> 3 * y + 35 == 5 * (y + 1) >>> 3 * y + 35 = 5 * (y + 1) Notes : 1) Le symbole = est appelé symbole d affectation. 2) Il convient de bien distinguer les symboles = et ==. Ce dernier correspond au test d égalité (on l a déjà rencontré plus haut). 3) A bien distinguer également : une variable et sa valeur (une case mémoire et son contenu ne sont pas la même entité). 4) Observer : la modification de la valeur de x est sans impact sur y [Qu. 13] Après avoir défini les variables u et v comme suit : >>> u = 10 >>> v = 5 on effectue successivement : >>> u = u + v >>> v = u + v >>> u - v Quelle est la valeur de la dernière expression calculée? [Qu. 14] Supposons que a et b soient deux variables de même type. Quel est l effet sur a et b des instructions suivantes? >>> t = a >>> a = b >>> b = t

TP PYTHON - 01 5 4. Encore des classes... 4.1. La classe str. Une chaîne de caractères (string en anglais) est un objet de la classe str. On peut mettre plusieurs chaînes de caractères boût à boût avec l opérateur binaire de concaténation, noté + Essayer et observer... >>> type( Hello ) >>> type( Hello ) >>> Hello == Hello >>> C est en forgeant qu on devient forgeron >>> il a dit : bravo! >>> Ceci est + une phrase + courte >>> bla * 4 Notes : 1) Les trois premières expressions montrent que les apostrophes simples et doubles sont interchangeables. Ceci peut paraître à première vue inutile. Les deux expressions qui viennent ensuite donnent un élément de réponse : si l on veut définir une chaîne de caractères comportant une (ou plusieurs) apostrophe(s) simple(s), il suffit de la délimiter à l aide de guillemets 1. Et vice versa... 2) Les deux dernières expressions montrent que les symboles + et * ont une signification complètement différente selon leur contexte d utilisation. Nous verrons d autres exemples de ce genre de situation. [Qu. 15] Que se passerait-il si l on évaluait l expression suivante? >>> c est en forgeant qu on devient forgeron [Qu. 16] La fonction len (abbréviation du mot anglais length) renvoie la longueur de certains objets, et s applique notamment aux objets de type str. Quel résultat obtient-on en évaluant l expression suivante? >>> len( Hello * len( Hello )) Les caractères qui composent une chaîne sont numérotés à partir de zéro. On peut y accéder individuellement en faisant suivre le nom de la chaîne d un entier encadré par une paire de crochets : 1. En anglais, on parle de simple quotes et de «double quotes»...

TP PYTHON - 01 6 >>> s = serpent >>> s[0] >>> s[1] >>> s[2] >>> s[-1] >>> s[-2] >>> s[20] >>> type(s) == type(s[0]) [Qu. 17] A la suite des commandes ci-dessus, essayer ceci : >>> s[0] = S Qu observe-t-on? [Qu. 18] Etant donnée une chaîne de caractères s, construire une expression de type bool valant True si, et seulement si, le premier et le dernier caractère de s sont identiques. [Qu. 19] Comment interpréter le résultat de la dernière évaluation, dans l encadré ci-dessus? A partir de maintenant, nous allons nous mettre à utiliser l éditeur, ce qui nous donnera une plus grande souplesse et (comme cela a été dit plus haut) la possibilité de sauvegarder notre travail. Dans ce qui suit, l invite >>> du système n apparaîtra que si les commandes indiquées sont à taper dans la console. Une différence notable de comportement entre la console et l éditeur : lorsqu une expression est évaluée dans la console, sa valeur s affiche à la ligne suivante. En revanche, lorsque l évaluation est effectuée depuis l éditeur, un simple message du style : >>> (executing lines 1 to 5 of "mon_fichier.py") apparaît (dans la console). On utilisera la fonction print pour obtenir l affichage souhaité. Par exemple : # Ce qui suit est saisi dans l éditeur! x = 2 y = x + 1 print (x * y) # Après évaluation, le résultat (6) apparaît dans la console [Qu. 20] Quel serait le résultat de l évaluation de la variable x à l issue des quelques étapes suivantes?

s = tangente t = hyperbole k = 2 x = # chaine vide x = x + t[k] k = k - 1 x = x + t[k] k = k - 1 x = x + s[k] x = x + t[1 // 2] + t[-3] + s[len(s) // 4] TP PYTHON - 01 7 4.2. La classe list. Une liste consiste en une succession ordonnée d objets. Les termes d une liste sont numérotés à partir de 0 (comme pour les chaînes de caractères). Essayer et observer... >>> x = [0,1,2,3] >>> type(x) >>> len(x) >>> L = [3.14, 22/7, pi ] >>> len(l) >>> L[0] >>> L[1] >>> L[2] >>> L[-1] >>> L[0] = 3.1416 >>> L Notes : 1) La fonction len s applique donc aussi bien à des chaînes de caractères (classe str) qu à des listes (classe list) 2) Une liste peut être hétérogène (ses termes peuvent appartenir à des classes distinctes) : cf. quatrième expression 3) Une liste est modifiable (cf. avant-dernière et dernière expressions), ce qui n est pas le cas des chaînes de caractères 4) Deux (ou plusieurs listes) peuvent être concaténées : on utilise le symbole + comme pour les chaînes de caractères. [Qu. 21] Quelle est la longueur de la liste [1, [2, 3], [4, [5, 6]]]? [Qu. 22] Quelle est la valeur de l expression [1, 2, 3] == [1, [2, 3]]? [Qu. 23] Quel serait le résultat de l évaluation de la variable x à l issue des quelques étapes suivantes?

TP PYTHON - 01 8 x = [1, 2] x = x + [1 + len(x)] x = [1, 2, x] [Qu. 24] Quelle est la valeur de l expression len([1, 2] + [3, [4] + [5, 6]])? [Qu. 25] Quel est le type de la variable x, définie comme suit? x = len([1,2,3] * 10) < 40 Essayer et observer... >>> L = [1, 2] >>> L.append(3) >>> L >>> L.extend([4,5]) >>> L Notes : 1) On dit que extend et append sont des méthodes de la classe list (il en existe d autres). 2) Comme le montre l exemple ci-dessus, les méthodes append et extend permettent toutes deux de rallonger une liste. La première, en lui ajoutant un élément supplémentaire ; et la seconde, en la concaténant avec une autre liste. [Qu. 26] Quel serait le résultat de l évaluation de la variable x à l issue des quelques étapes suivantes? x = [] x.append(1) x.append([2,3]) x.extend([3,4]) 5. Un peu de maths avec Python 5.1. Les nombres palindromes et les nombres de Lychrel. Un nombre est un «palindrome» si la liste de ses chiffres est symétrique : 44, 131, 2442... On considère un nombre entier positif n et on lui applique l algorithme suivant : [Etape 1.] on détermine l entier m obtenu en inversant l ordre des chiffres de n ; [Etape 2.] si n = m, l algorithme s arrête, sinon on revient à l étape 1 en remplaçant n par n + m ; Si cet algorithme ne s arrête jamais, on dit que n est un nombre de Lychrel. 196 est un minorant de l ensemble des nombres de Lychrel mais on ne sait pas si c est son plus petit élément! [Qu. 27] Appliquer cet algorithme aux nombres suivants : 13, 64, 87 et 89 si vous avez du courage...

TP PYTHON - 01 9 5.2. Les nombres premiers jumeaux. La première commande ci-dessous donne accès aux fonctions ceil et log10 du module math. Ces fonctions calculent respectivement la partie entière par excès et le logarithme décimal de leur argument. Essayer et observer... >>> from math import ceil, log10 >>> 2 ** 5-1; 2 ** 7-1 >>> log10(2 ** 5-1) >>> log10(2 ** 7-1) >>> ceil(log10(2 ** 5-1)) >>> ceil(log10(2 ** 7-1)) [Qu. 28] Quelle est, selon vous, la fonction étroitement associée à ceil? Vérifier votre déduction. [Qu. 29] La plus grande paire connue à ce jour de nombres premiers jumeaux (p et p + 2 sont premiers) trouvée en Décembre 2011 : p = 318032361 2 107001 1 ; p + 2 = 318032361 2 107001 + 1 Afficher p puis le nombre de chiffres de (l écriture décimale de) p. [Qu. 30] Que pensez-vous de la valeur de l expression len(str(318032361 * 2 ** 107001-1))? Note : On peut écrire plusieurs instructions à exécuter, sur une seule ligne de l éditeur ou du shell, en séparant ces instructions par des points-virgules. 6. Entrées de données au clavier Afin d ajouter un brin d interactivité lors de l exécution d un script, on peut utiliser la fonction input. Celle-ci affiche un message sur la console, attend qu une chaîne de caractères soit entrée puis renvoie cette chaîne. Exemple (à essayer) : # Ce qui suit est à taper dans l éditeur rep_1 = input( Nom : ) rep_2 = input( Prénom : ) # Les deux instructions suivantes ont strictement le # même effet. Observer la différence de syntaxe : print( Bonjour + rep_2 + + rep_1 +. Quoi de neuf? ) print( Bonjour, rep_2, rep_1 +., Quoi de neuf? ) Notes : 1) Lorsque la fonction print reçoit plusieurs arguments, séparés par des virgules (comme dans la dernière ligne de l encadré précédent), leurs valeurs sont affichées séparées par des espaces. 2) Le caractère spécial \n permet d insérer des sauts de ligne. Exemple : print( Ceci\nest une phrase\nsur quatre\nlignes )

TP PYTHON - 01 10 0n a parfois besoin de convertir une chaîne de caractères en valeur numérique. La fonction int permet cela : # Ce qui suit est à taper dans l éditeur n = int(input( Entrer la valeur de n : )) print( Le carré de, n, est :, n*n) 7. Structures de contrôle 7.1. Quelques tests. Pour exécuter une action lorsque une condition est réalisée et, sinon, ne rien faire, il existe une structure de programmation. Elle est introduite par le mot-clef if. Note : Dans ce paragraphe on utilise la fonction randint du module random. Pour accéder à celle-ci, exécuter l instruction suivante : from random import randint. [Qu. 31] Recopier les lignes qui suivent dans une cellule de l éditeur et exécuter plusieurs fois cette cellule (au moins 3 fois) : x=randint(1,6);y=randint(1,6) if (x+y) > 6 : print(x+y) print(x) puis faire de même avec le code : x=randint(1,6);y=randint(1,6) if (x+y) > 6 : print(x+y) print(x) [Qu. 32] A votre avis, quelles sont les valeurs que peut prendre l expression randint(1,6)? Quelle expérience aléatoire permet-elle de modéliser? [Qu. 33] Comment modifier le dernier script pour qu il affiche, x+y, x et y, exclusivement lorsque x+y>6 est vraie. [Qu. 34] Essayer de déterminer, sans l exécuter, ce que produit le script ci-dessous puis vérifier : x=randint(1,6);y=randint(1,6) print((x+y>6)*(str(x+y)+ \n +str(x)+ ; +str(y))) On peut aussi vouloir réaliser une action lorsque la condition est réalisée et une autre action uniquement lorsque cette condition ne l est pas. Essayer le script suivant :

TP PYTHON - 01 11 if randint(0,1)==0 : print( Pile ) else: print( Face ) [Qu. 35] Quelle modification, sur l alignement des lignes, doit-on effectuer? [Qu. 36] On remplace la première ligne du script précédent par : x=randint(0,1). Écrire la suite, sans réutiliser la fonction randint, pour obtenir un script qui réalise la même simulation. Note : Le décalage d une ligne par rapport à la précédente se nomme l indentation. Elle est strictement positive, strictement négative ou nulle. Vous aurez bien noté qu elle joue un rôle déterminant dans la structure de programmation que l on vient d étudier et, plus généralement, dans les structures de contrôles étudiées dans ce paragraphe. 7.2. Quelques boucles. 7.2.1. La boucle for. Pour déterminer un tableau de valeurs d une fonction ou pour calculer un terme d une suite définie par récurrence, on effectue des opérations similaires plusieurs fois sur des valeurs différentes. La structure de boucle for permet de réaliser ce type de tâche en rédigeant peu de code. Essayer et observer : # Quelques valeurs de la fonction x > racine(x+1) from math import sqrt for x in [0,0.5,1,1.5,2,3,4] : print(sqrt(x+1)) # Une valeur d une suite définie par récurrence u=1 for k in range(1,5) : u=u**2+1 print(u) [Qu. 37] Modifier la première boucle pour qu elle affiche les couples (x, x + 1) pour 0, 0.5, 1, 1.5, 2 à raison d un couple par ligne. [Qu. 38] Quel est le type de l objet retourné par la fonction range? [Qu. 39] Modifiez la deuxième boucle en remplaçant range(1,5) par range(0,4). Conclusion? [Qu. 40] Comment faut-il modifier la deuxième boucle pour qu à son exécution s affichent les différentes valeurs prises par la variable u? Notes : 1) L objet qui apparaît entre le "in" et le caractère ":" dans une boucle for doit être «itérable». C est le cas des objets de la classe list et de la classe str. On verra par la suite qu il existe d autres classes d itérables. 2) Bien évidemment, on peut utiliser entre le "in" et le caractère ":", une expression dont l évaluation, à l exécution de la boucle, produira un objet itérable. Par exemple, pour calculer et afficher, à la demande, le terme de rang n de la suite précédente, on peut écrire le script :

TP PYTHON - 01 12 n=int(input("rang du terme à calculer:")) for k in range(1,n+1) : u=u**2+1 print(u) 7.2.2. La boucle while. Lorsqu il est impossible (ou compliqué) de déterminer a priori, le nombre de fois où une même suite d instructions doit s exécuter, c est vers la boucle while qu il faut s orienter. Essayer : # Temps d attente d un as x=0;n=0 while x!= 1: x=randint(1,6) n=n+1 print( Nombre de lancers du dé :, n) [Qu. 41] Était-il possible de prévoir le nombre de fois où il fallait exécuter le bloc d instructions indenté? [Qu. 42] Peut-on être certain que cette boucle se termine? [Qu. 43] Modifier le script précédent pour qu il affiche aussi les différentes valeurs prises par randint(1,6) dans la boucle. [Qu. 44] Comment se passer de la variable x sans changer l effet du script initial? Est-ce possible pour le script de la question précédente? Voici un autre script à essayer : # Somme harmonique x=1 ; k=1 n=int(input("choisir un entier strictement supérieur à 1:")) while x < n : k = k+1 x = x+1/k print( 1/1+1/2+...+1/ +str(k-1)+ < +str(n)+ <= 1/1+1/2+...+1/ +str(k)) [Qu. 45] Si k prend la valeur 4 suite à l affectation k = k+1, quelle est la valeur de la variable x après l affectation x = x + 1/k? [Qu. 46] Quel résultat mathématique justifierait la finitude dans tous les cas de la boucle? (il ne s agit pas de le démontrer, nous l admettons!) [Qu. 47] On note k n la valeur de la variable k de sortie de la boucle lorsque l entier choisi vaut n. Calculer k n+1 k n pour les valeurs suivantes de n : 10, 11, 13, 14, 15, 20 (on pourra utiliser une autre boucle). Que remarque-t-on? Note : On notera que, pour pouvoir sortir d une boucle while lorsqu on y est entré, il est indispensable de modifier, dans le bloc d instructions indentées, certaines valeurs des variables qui apparaissent dans l expression suivant le mot while.

TP PYTHON - 01 13 8. Encore un peu de maths mais avec plus de Python 8.1. La suite de Syracuse. Soit a un entier plus grand que 2. On définit la suite d entiers (u n ) par : u n si u n est pair, 2 u 0 = a et pour tout entier naturel n, u n+1 = 3u n + 1 sinon. [Qu. 48] Ecrire un script qui qui affiche u n pour a et n saisis au clavier par l utilisateur. [Qu. 49] S il existe n tel que u n = 1, que se passe-t-il pour les termes suivants? Vérifier que si, a 100, un tel n existe et afficher pour chaque valeur de a, a 100, le plus petit entier n tel que u n = 1. 8.2. Nombres de Lychrel. Revenons sur les nombres de Lychrel. Notre but est d écrire un script qui pour un entier n saisi au clavier, affiche la suite des entiers de valeur initiale n qui se termine par un nombre palindrome, lorsque cette suite est finie, et le nombre de sommes calculées. [Qu. 50] Ecrire un script qui retourne la chaine «miroir» d une chaîne saisie au clavier par l utilisateur. [Qu. 51] Ecrire le script souhaité et le tester pour 89. On utilisera les fonctions de transtypage str et int.