Cours Python 2.1 2013/2014



Documents pareils
Présentation du langage et premières fonctions

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

STAGE IREM 0- Premiers pas en Python

Algorithmique et Programmation, IMA

Découverte de Python

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

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

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

Introduction au langage C

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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)

Chapitre 2 Devine mon nombre!

Cours d algorithmique pour la classe de 2nde

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


Langage Java. Classe de première SI

Recherche dans un tableau

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

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Calcul Formel et Numérique, Partie I

Cours d Algorithmique et de Langage C v 3.0

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Licence Sciences et Technologies Examen janvier 2010

Java Licence Professionnelle CISII,

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

L informatique en BCPST

Notions fondamentales du langage C# Version 1.0

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

Plan du cours. Historique du langage Nouveautés de Java 7

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

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

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

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

INF 321 : mémento de la syntaxe de Java

Cours 7 : Utilisation de modules sous python

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

as Architecture des Systèmes d Information

Introduction à MATLAB R

2 Comment fonctionne un ordinateur, dans les grandes lignes

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

V- Manipulations de nombres en binaire

Conventions d écriture et outils de mise au point

SUPPORT DE COURS. Langage C

Initiation à l algorithmique

1. Structure d'un programme FORTRAN 95

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

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

Création et Gestion des tables

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Représentation d un entier en base b

1 Recherche en table par balayage

Programmation Web. Madalina Croitoru IUT Montpellier

ALGORITHMIQUE ET PROGRAMMATION En C

OCL - Object Constraint Language

Cours d initiation à la programmation en C++ Johann Cuenin

Initiation à la Programmation en Logique avec SISCtus Prolog

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

EXCEL TUTORIEL 2012/2013

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

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

Programmation C++ (débutant)/instructions for, while et do...while

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

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

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

Programmer en JAVA. par Tama

Introduction à l algorithmique et à la programmation M1102 CM n 3

Algorithmique et programmation : les bases (VBA) Corrigé

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Les structures. Chapitre 3

Cours Informatique Master STEP


Programmation avec Xcas ou Python

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

I. Introduction aux fonctions : les fonctions standards

ACTIVITÉ DE PROGRAMMATION

Logiciel de Base. I. Représentation des nombres

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le langage C. Séance n 4

Python - introduction à la programmation et calcul scientifique

DM 1 : Montre Autoquartz ETA

«Clustering» et «Load balancing» avec Zope et ZEO

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

TP, première séquence d exercices.

Un ordonnanceur stupide

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Les chaînes de caractères

1 Lecture de fichiers

Encryptions, compression et partitionnement des données

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Traduction des Langages : Le Compilateur Micro Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Algorithmique et Programmation Fonctionnelle

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Claude Delannoy. 3 e édition C++

Transcription:

Cours Python 2.1 2013/2014 1 Introduction Le langage Python est un langage développé à partir de 1990 par Guido van Rossum. Il doit son nom aux Monty Python dont Van Rossum était fan. C est un langage multi-paradigme (impératif, objet, fonctionnel) et doté d un typage dynamique fort, d une gestion automatique de la mémoire par ramasse-miettes et d un système de gestion d exceptions. Il est sous licence libre. Il a été conçu pour être très lisible, et notamment l indentation permet de délimiter les blocs, au lieu d utiliser des accolades comme en C ou Java. Pour utiliser un langage de programmation confortablement, on a besoin de ce que l on appelle un environnement de développement. Nous utiliserons, Pyzo. Il permet d éditer des programmes, de les sauvegarder, de les exécuter, il est multi-plateforme et gratuit. 2 Saisir, exécuter, observer On peut «communiquer» avec l interpréteur Python de deux manières di érentes. 2.1 Le mode interactif direct On tape des instructions dans le «shell» et on valide pour obtenir la réponse : 1 >>> <Ma commande> 2 <Sa réponse!> 3 >>> <--- il attend une nouvelle commande Quelques exemples : 1 >>> 42**42 2 15013093754529657235677197216425445781404797056873 3 8777235893533016064 4 >>> id(sqrt(2)) 6 >>> import math ; math.sqrt(12) # on doit inclure l instruction " import math" pour pouvoir faire appel aux fonctions mathématiques qu il faut "pointer" avec le préfixe math 1

Remarque 1 On peut aussi utiliser l instruction from math import * pour importer toutes les fonctions mathématiques disponibles. 2.2 Le mode scripting : «Programming is Hard, Let s Go Scripting...» On saisit les instructions dans un fichier et on exécute tout ou une partie des ces instructions. Dans le «shell» on voit les sorties et les commentaires de l interprèteur. On l utilise pour des programmes plus longs et que l on souhaite enregistrer, le plus souvent. 3 Des classes, des objets à définir et à manipuler Le langage Python est orienté objets. Les expressions que l on utilise désignent des objets qui appartiennent à des classes, c est à dire des familles nommées. Certaines de ces classes sont définies par défaut, d autres dans des modules qu il faut charger. Les utilisateurs peuvent aussi définir leurs propres classes et aussi leurs modules. Étudions quelques classes des plus utilisées. 3.1 Les types ou classes de nombres Il s agit d objets prédéfinis et non modifiables. Ils sont regroupés en plusieurs classes. 3.1.1 Des entiers, la classe int Cette classe représente les entiers relatifs. En Python 3, il n y a quasiment pas de limite à la représentation des entiers comme vous avez pu le voir dans le TD1. Les principales opérations sur les entiers : + : addition - : soustraction * : multiplication ** : exponentiation / : division // : division entière % : modulo abs : valeur absolue 1 >>> type(-12) # la fonction type retourne le type i.e. la classe d un objet 3 >>> type(12/5)== int 5 >>> 5//3 ;type(5//3)) # // division entière 7 >>> 3.1.2 Les booléens, la classe bool Cette classe contient 2 objets, True (1) et False (0). C est une sous classe de la classe int. Donc tout les opérateurs que l on a vu précédemment peuvent s utiliser sur les booléens. 1 >>> 2==3 3 >>> True+False Les opérateurs de cette classe sont les suivants : and (et), or (ou) et not (non). 2

1 >>> True and False 3 >>> True or False 5 >>> not(true+true) 3.1.3 Des décimaux, la classe float Un float est noté avec un point décimal (jamais avec une virgule ) ou en notation exponentielle. Il représente une nombre décimal compris entre 1, 7 10 308 et 1, 7 10 308. Les flottants supportent les mêmes opérations que les entiers. 1 >>> 3.14 ;123e-12 4 >>> type(-12/5) 6 >>> b=42**4.2 7 >>> type(b) 9 >>> 5.1.is_integer() #il s agit d une méthode de l objet : objet. méthode Remarque 2 (Les limites de la représentation des réels en virgule flottante) 1 >>> 0.1+0.2-0.3 Ce problème vient de la représentation des réels en virgule flottante. On a aussi des erreurs du type : 1 >>> 1e10+1e-10==1e10 3.1.4 Des nombres complexes, la classe complex La classe complex permet de travailler avec des nombres complexes. Ces objets supportent les mêmes opérations que les entiers, sauf la division entière. 1 >>> (2+2j)*1j 3 >>> (-2+2j)/(3-2j) 5 >>> (-2-1.5j).real 7 >>> ((1+2j)**2).conjugate() 3

Avant d aller plus loin : attributs et méthodes d une classe... L une des spécificités de la programmation orientée objets, c est l encapsulation. C est à dire que lorsque on définit une classe d objets, on définit les attributs et les méthodes de la classe. Par exemple, un objet de type complexe possède les attributs real et imag. Ces attributs sont de type float. Un objet possède aussi des méthodes qui e ectuent des actions en utilisant cet objet. Par exemple la méthode conjugate qui s utilise comme dans l exemple précédent. Mais on a vu aussi que l on peut appliquer des fonctions aux objets. Celles ci ne font pas partie de la définition de la classe.... et les variables ou références d objets Pour accéder plus simplement aux objets, Python utilise la notion de variable ou de référence d objet. Pour définir une variable on utilise l a ectation : 1 <la variable> = <un identificateur d objet> La variable n est pas l objet mais elle référence l objet en contenant l identificateur de l objet. Tant qu une nouvelle a ectation n est pas réalisée, elle référence toujours le même objet. Essayer ceci : 1 >>> a=2 3 >>> id(a) ;id(2) 5 >>> b=a ;b=3 ; 7 >>> id(a) ;id(b) ;id(3) ;id(2) Dans les définitions et exemples de ce document le mot «objet» pourra parfois être remplacé «référence d objet». On vérifiera que c est possible. 3.2 Les chaînes de caractères, la classe str Les objets de type str sont identifiés par une suite finie de caractères délimitée par des apostrophes ou des guillemets. Ces objets ne sont pas modifiables. Les caractères de l objet str sont numérotés à partir de 0 de gauche à droite dans l ordre croissant et à partir de 1 de droite à gauche dans l ordre décroissant. Saisissez les lignes suivantes dans un fichier de l éditeur. 4

1 a= MPSI 3 ; print(a) 3 print(type(a)) 5 b= Alors là je dis "OUI"! 7 c= et je redis :\n "OUI"! 9 print(b,c) 11 a= Lycée + THIERS 13 print(a[7 :]) # 1er caractère inclus : 1er caractère exclus 15 print(a[-4 :-1]) 17 print(len( MPSI 3 ), MPSI 3 [ :], MPSI 3 > MPSI 2 ) 3.3 Des séquences : listes et tuples 3.3.1 La classe list L un des types les plus utilisés en Python est la liste d objets. Les listes peuvent comporter des objets de types di érents. On définit une liste en énumérant, entre deux crochets, ses éléments séparés par des virgules. Les listes sont des objets modifiables! Saisissez les lignes suivantes dans une cellule d un fichier de l éditeur. 1 a=[1, A,[2]] 3 print(type(a)) 5 print(type(a[2])) 7 b=a ; print(b,id(b)) 9 a.append(true) 11 print(a, b,id(b)) On accède aux éléments d une liste comme aux caractères d une chaine et on coupe les listes avec la même syntaxe que celle utilisée pour les chaînes. 3.3.2 La classe tuple Elle est très similaire à la classe liste à ceci près que ses éléments ne sont pas modifiables. Pour définir un tuple on remplace les crochets des listes par des parenthèses. Tester : 5

1 a=(1, A,[2]) 3 print(type(a)) 5 print(type(a[2])) 7 b=a ; print(b,len(b),id(b)) 9 a=a+(true,) 11 print(a, b,id (a),id(b)) Les éléments d un tuple sont indexés comme les éléments d une liste et on peut sélectionner une partie d un tuple avec la même syntaxe que celle utilisée pour les listes. 4 Les instructions 4.1 Les instructions conditionnelles Pour réaliser une action lorsque une condition est réalisée et, sinon, ne rien faire sinon ou faire une autre action, il existe une instruction. En fait plusieurs instructions. Voici les formes générales de ces instructions : 1 if <un objet> : 2 <un bloc d instructions> 1 if <un objet> : 2 <un bloc d instructions> 3 else : 4 <un bloc d instructions> 1 if <un objet> : 2 <un bloc d instructions> 3 elif <un objet> : 4 <un bloc d instructions> 5 else : 6 <un bloc d instructions> On peut enchaîner plusieurs elif mais il ne sont suivis que d un seul else. Compléter le script suivant pour qu il a che le nombre de solutions réelles de l équation ax 2 + bx + c =0. 1 a=float(input( a= )) ; b=float(input( b= )) ; c=float(input( c= )) 3 if b*b-4*a*c > 0 : 6

4.2 La boucle for Elle permet de répéter des actions similaires un nombre de fois déterminé à l avance. Voici sa forme générale : 1 for <une référence d objet> in <un objet itérable> : 2 <un bloc d instruction> Remarque 3 L expression : <une référence d objet> in <un objet itérable>, est un booléen qui peut être utilisée en dehors d une boucle for pour savoir si l objet apparaît dans l itérable. On a déjà étudié trois classes d objets itérables : les chaînes de caractères, les listes et les tuples. Une quatrième classe d itérables, la classe range est très utile lorsqu on écrit des boucles. On verra qu il en existe d autres. Essayer : 1 for i in range(1,10,2) : # valeur initiale, 1ère valeur exclue, pas 2 print(i%2) 4 for i in range(10,1,-2) : 5 print(i%2) 8 for a in une boucle : 9 print(a) 11 a=[1,3,5,7,11] 12 for k in a: 13 print(a*a) 14 print(a) 16 a=(1,2,3,4) 17 for k in a: 18 a=a+(k+1,) 19 print(a) 21 a=[1,2,3,4] 22 for k in a: 23 a.append(k+1) 24 if k==10 : 25 break 26 print(a) 4.3 La boucle while Elle permet d e ectuer des instructions tant q une condition est réalisée, plus généralement, tant qu une expression est non nulle. 7

1 while <un objet> : 2 <un bloc d instruction> Essayer les boucles suivantes : 2 n=int(input( n= )) 3 k=1 4 while (k*k+1)%n : 5 k+=1 6 if k==n : 7 break 8 print(k) 11 a=[1, ab, 3.1] 12 while a: 13 print(a.pop(0)) Remarque 4 L instruction break permet de sortir de la boucle sans attendre la fin de celle-ci. L instruction continue permet de passer à l élément suivant de l étirable en ignorant les instructions situées après celle-ci dans le bloc de la boucle. On utilise la méthode pop pour supprimer le premier élément de cette liste tout en retournant celui-ci. 4.4 Quelques exercices 1. Ecrire un script demandant à l utilisateur d entrer des entiers a et b, puis a chant le plus grand des deux. 2. Ecrire un script demandant à l utilisateur d entrer un nombre décimal x et a chant la distance de x à Z, c estàdire x n, oùn est l entier le plus proche de x. 3. Ecrire un script demandant à l utilisateur d entrer des réels a, b et c et a chant le nombre de solutions réelles de l équation ax 2 + bx + c =0. 4. Ecrire un script qui a che la liste sans répétition des caractères d une chaîne saisie au clavier par l utilisateur. 5. Ecrire un script demandant inlassablement à l utilisateur d entrer un entier, jusqu à ce que celui-ci soit pair. 6. Ecrire un script qui vérifie si une chaîne de caractères, saisie au clavier, comporte deux caractères consécutifs identiques. 7. Ecrire un script demandant à l utilisateur d entrer un entier strictement positif n, et a chant les diviseurs de n à raison d un diviseur par ligne. 8. Ecrire un petit script que joue à c est plus! c est moins! : L ordinateur choisit secrètement un entier au hasard entre 0 et 50000 et l utilisateur doit le trouver en un minimum de coups. A chaque réponse proposée, un message s a che, qui indique si le nombre à trouver est plus grand, plus petit ou encore si c est le bon. A la fin, le nombre de coups est a ché. 8

5 Premier contact avec les fonctions Bien entendu, on souhaite pouvoir définir des objets Python pour modéliser, en particulier, des suites, des fonctions mathématiques. Voyons ce que Python nous propose. 5.1 La définition et l appel Une fonction est un ensemble d instructions regroupées sous un nom et que l on exécute lorsqu on en a besoin. Voici la définition générale d une fonction en Python : 1 def <nom de la fonction><tuple de références d objets> : 2 <Bloc d instructions> Le bloc d instructions est obligatoire. Voici un exemple. Saisir les lignes suivantes dans l éditeur et les exécuter. 1 def affichedistance(x,y) : 2 print(abs(x-y)) La fonction est alors définie. On peut maintenant l appeler dans le shell ou dans un script. Essayer : 1 >>> affichedistance(1+2j,3-3j) Les fonctions sont aussi des objets. Regardons ce que nous dit la fonction type. Taper les instructions suivantes dans le shell : 1 >>> type(affichedistance) 3 >>> type(affichedistance(2,3)) 5 >>> affichedistance(2,3)==none Nous allons voir que l expression d appel d une fonction peut être un objet du type que l on souhaite. 5.2 Fonction avec retour : return! Modifions la fonction précédente pour que, si x et y sont deux objets de type nombre, Distance(x,y) soit un objet du même type que x et y, précisément l objet abs(x-y). Recopier les lignes suivantes : 1 d=0 2 def distance(x,y) : 3 return abs(x-y) 5 type(distance(2,3)) 6 d=distance(1+2j,3-3j) 7 type(d) 9

Pour que la fonction renvoie une valeur, il faut qu une instruction du type return <objet> soit exécutée. Lorsque cette instruction est exécutée, l exécution de la fonction se termine et l objet situé après return est la valeur finale de fonction. Voici un autre exemple plus complexe : 1 def mediane(x,y,z) : 2 if (x-y)*(x-z)<=0 : 3 return x 4 elif (y-x)*(y-z)<=0 : 5 return y 6 else 7 return z Saisir l instruction suivante : 1 >>> mediane(3,2.5,5) Les variables qui apparaissent après le nom de la fonction sont appelées paramètres formels de la fonctions. Les objets utilisés lors de l appel de la fonction sont appelés paramètres e ectifs de la fonction. Exercice. n 1 1. Écrire une fonction qui renvoie, si ÿ =[ 0, 1,..., n 1 ] est une liste de nombres, la somme ( 1) k k. 2. Écrire une fonction qui retourne le produit des éléments d une liste passée en paramètre. 5.3 Que se passe-t-il lors de l appel d une fonction pour les paramètres formels? Les variables correspondant aux paramètres formels sont crées et initialisées avec les valeurs des paramètres e ectifs. Les variables crées sont donc nouvelles et donc ne peuvent pas être utilisées pour modifier des variables globales mêmes si elles font partie des paramètres e ectifs. Voyons un exemple. Saisir le script suivant et observer : k=0 1 (x,y)=(1,2) 3 def deplace(x,y) : 4 if x<y : 5 x=x+1 6 elif x>y : 7 y=y+1 9 print(x,y) Les variables x et y qui apparaissent dans la fonction sont di érentes des précédentes. On modifie donc des variables locales. Le seul moyen pour récupérer ces valeurs c est de les renvoyer. Comment modifier la fonction et le script pour qu ils a ectent les variables x et y? 5.4 Les variables locales Toutes les variables qui sont définies pour la première fois dans une focntion n existent que pendant l exécution de la fonction. On dit que ces variables sont locales, par opposition aux autres variables, dites 10

globales, qui ont été définies en dehors des fonctions. Seuls les paramètres formels d une fonction peuvent masquer des variables qui existaient avant l exécution de la fonction. Il est bien entendu très maladroit de modifier une variable globale à l intérieur d une fonction. 5.5 Utiliser un paramètre tuple de manière transparente Ici, encore une fois, on va constater que le langage Python permet d écrire des scripts élégants et plus universels que dans d autres langages. Voyons comment. Ecrivons une fonction plusproche0(k,t) qui a che la valeur du tuple de nombres la plus proche de k. Recopier cette focntion dans l éditeur 1 def plusproche0(x,t) : 2 d=abs(t[0]) 3 for y in t[1 :] 4 if abs(x-y)<d : 5 d=abs(x-y) 6 print(d) puis dans le shell, 1 >>> plusproche0(0,(-1,2,-3,4)) Pour ce type de fonction, Python propose une autre syntaxe : 1 def plusproche0(x,*t) : 2 d=abs(t[0]) 3 for y in t[1 :] : 4 if abs(x-y)<d : 5 d=abs(x-y) 6 print(d) Cela évite les doubles parenthèses : 1 >>> plusproche0(0,-1,2,-3,4) 2 >>> plusproche0(1,-1,2,1.5,3,2.1) Le tuple doit apparaître en dernier dans la suite des paramètres. 6 La «compréhension» des listes La définition des listes en compréhension permet de créer des listes correspondant à contraintes avec peu d instructions. Deux syntaxe possibles : 1 [ <objet> for <objet> in <iterable>] 3 [ <objet> for <objet> in <iterable> if <objet>] 11

Essayer : 1 >>> [x+1 for x in range(10)] 2 >>> [x for x in range(10) if x%2] 3 >>> n=10 ; sum([ 1/k for k in range(n,2n+1)] On peut même utiliser plusieurs boucles. 1 >>> mot= Hello 2 >>> [x+y for x in mot if x!= H for y in mot if y!=x] 7 Exercices 1. Définir en compréhension, la liste des nombres impairs inférieurs à n. 2. Définir en compréhension, la liste des voyelles présentes dans une chaine. 3. Ecrire une fonction dist(x) qui renvoie la distance de x à Z, c estàdire x n, oùn est l entier le plus proche de x. 4. Ecrire une fonction racinestrinome(a,b,c) a chant les solutions réelles de l équation ax 2 + bx + c =0. 5. Écrire une fonction qui retourne 2nÿ Application numérique : n = 1000. k=n 1 ÿ. Calculer cette somme pour n = 10. Idem pour k 6. Ecrire une fonction a chant le plus grand élément en valeur absolue d un tuple. 1Æi<jÆn 7. Ecrire une fonction qui supprimer les espaces d une chaine et retourne la chaîne ainsi obtenue. 1 i + Ô j. 8. Étant une liste de nombres réels [x 0,x 1,...,x n 1 ] et k œ N ú, on dit que (x i,x i+k ) est une alternance de signe si x i x i+k < 0 et tous les termes situés entre ces deux termes, s il y en a, sont nuls. Écrire une fonction qui retourne le nombre d alternance de signe de la liste. 9. Ecrire un script qui vérifie si une chaîne de caractères, saisie au clavier, comporte deux caractères consécutifs identiques. 12