# Python TP 1 ## Exercice 1 ### Question 1 ```python= liste = [2, 5, 1, 9, 11] list(liste) "La conversion précédente ne change rien" tuple(liste) "converti la liste en tuple" str(liste) "converti les éléments de la liste en caractère" dict((x, 0) for x in liste) "chaque élément de la liste est clé et a comme valeur associé 0" dict((x, i) for i, x in enumerate(liste)) "chaque élément de la liste est clé et a comme valeur associé l'index de l'élément dans la liste" set(liste) "converti la liste en ensemble" print(set([100] + liste)) ``` ### Question 2 ```python= chaine = 'hello world' list(chaine) "On crée une liste composée de chaque caractère de la chaine" tuple(chaine)) "idem mais on a un tuple" str(chaine) "change rien" dict((x, 0) for x in chaine) "chaque caractère de la chaine est clé (de manière unique) et a comme valeur associé 0" dict((x, i) for i, x in enumerate(chaine)) "chaque caractère de la chaine est clé et a comme valeur associé l'index de l'élément dans la chaine. S'il y a plusieurs fois la même clé" "alors la valeur associé est l'index de la dernière clé" set(chaine) "converti la chaine en ensemble" set([100] + chaine) ``` ## Exercice 2 ### Question 1 ```python= def afficherTitre(texte, largeur): """ affiche le texte donné sous forme de liste de chaine de caractères centré dans la largeur indiquée et bordé d'asterisque ---------------------------------- Parameters texte : liste de chaine de caractère le texte à afficher largeur : entier largeur de la fenêtre ---------------------------------- Returns None ---------------------------------- Example >>>afficherTitre(["L'ingénieux hidalgo", "Don Quichotte de la Manche", "", "Composé par Miguel de Cervantes", "", "Avec privilège royal", "à Madrid", "en l'an de grâce 1605" ], 40) ****************************************** * L'ingénieux hidalgo * * Don Quichotte de la Manche * * * * Composé par Miguel de Cervantes * * * * Avec privilège royal * * à Madrid * * en l'an de grâce 1605 * ****************************************** """ print("*"*(largeur+2)) for mot in texte: print("*" + mot.center(largeur) + "*") print("*"*(largeur+2)) ``` ### Question 2 ```python= def afficherTitre(texte, largeur): """ idem mais on prend le max entre la largeur demandée et la largeur de la plus grande ligne Example: afficherTitre(["L'ingénieux hidalgo", "Don Quichotte de la Manche", "", "Composé par Miguel de Cervantes", "", "Avec privilège royal", "à Madrid", "en l'an de grâce 1605"], 10) ********************************* * L'ingénieux hidalgo * * Don Quichotte de la Manche * * * *Composé par Miguel de Cervantes* * * * Avec privilège royal * * à Madrid * * en l'an de grâce 1605 * ********************************* """ max_longueur_mot = 0 for mot in texte: if len(mot) > max_longueur_mot: max_longueur_mot = len(mot) largeur = max(largeur+2, max_longueur_mot) print("*"*(largeur+2)) for mot in texte: print("*" + mot.center(largeur) + "*") print("*"*(largeur+2)) ``` ### Question 3 ```python= def afficherTitre(texte, largeur, justifier): """ affiche le texte donné sous forme de liste de chaine de caractères centré dans la largeur indiqué et bordé d'asterisque en fonction de la justification ---------------------------------- Parameters texte : liste de chaine de caractère le texte à afficher largeur : entier largeur de la fenêtre justifier : str "centrer" ou "jdroite" ou "jgauche" ---------------------------------- Returns None ---------------------------------- Example >>>afficherTitre(["L'ingénieux hidalgo", "Don Quichotte de la Manche", "", "Composé par Miguel de Cervantes", "", "Avec privilège royal", "à Madrid", "en l'an de grâce 1605" ], 40,"jgauche ****************************************************** *L'ingénieux hidalgo * *Don Quichotte de la Manche * * * *Composé par Miguel de Cervantes * * * *Avec privilège royal * *à Madrid * *en l'an de grâce 1605 * ****************************************************** """ max_longueur_mot = 0 for mot in texte: if len(mot) > max_longueur_mot: max_longueur_mot = len(mot) largeur = max(largeur+2, max_longueur_mot) print("*"*(largeur+2)) if justifier == "centrer": for mot in texte: print("*" + mot.center(largeur) + "*") elif justifier == "jdroite": for mot in texte: print("*" + mot.rjust(largeur) + "*") else: for mot in texte: print("*" + mot.ljust(largeur) + "*") print("*"*(largeur+2)) ``` ## Exercice 3 ### Question 1 ```python= def incluse(a, b): """ La fonction prend deux chaine de caractère et renvoie True si tous les caractères de a sont dans b et False sinon ----------------------------- Parameters a : str b : str ----------------------------- Returns bool ----------------------------- Example >>>incluse('psa', 'abcdsxyz+-012') False """ for lettre in a: if lettre not in b: return False return True ``` ### Question 2 ```python= def verifierEntierValide(val, inf=None, sup=None): """ Verifie si la valeur est bien un entier compris entre inf et sup ---------------------------- Parameters val : str Une entier sous forme de chaine inf : int borne inférieure par défaut None sup : int borne supérieure par défaut None ----------------------------- Returns : bool True si la valeur est un entier compris entre inf et sup """ return (incluse(val,'0123456789')) and (inf == None or int(val)>=inf) and (sup == None or int(val)<=sup) verifierEntierValide('150', 100, 151) ```