# Python TP Gr.2 Eq.1 ##### You can put your code in the section below with in the three ` ```python= ``` ` ```python= Python 3.8.5 (default, Jul 28 2020, 12:59:40) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import math >>> math.__name__ 'math' >>> ``` ```python= def add(a, b): """add two number Parameters ---------- a : int, float 1st number b : [type] [description] Returns ------- int, float [description] Examples -------- >>> add(1, 3) 4 """ return a + b if __name__ == "__main__": import doctest doctest.testmod(verbose=True) ``` ```python= yc@yc-Lenovo-V580:~/Documents/code/ensai_python/TP2$ python3 doc_string.py Trying: add(1, 3) Expecting: 4 ok 1 items had no tests: __main__ 1 items passed all tests: 1 tests in __main__.add 1 tests in 2 items. 1 passed and 0 failed. Test passed. ``` ```python= yc@yc-Lenovo-V580:~/Documents/code/ensai_python/TP2$ python3 Python 3.8.5 (default, Jul 28 2020, 12:59:40) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import doc_string >>> doc_string <module 'doc_string' from '/home/yc/Documents/code/ensai_python/TP2/doc_string.py'> >>> doc_string.__name__ 'doc_string' >>> from doc_string import add ``` ```python= a, *rest = [1, 2, 3] # a = 1, rest = [2, 3] a, *middle, c = [1, 2, 3, 4] # a = 1, middle = [2, 3], c = 4 ``` Exercice 1 #1 ```python= liste = [2,5,1,9,11] print(liste) print(tuple(liste)) str(liste) print(dict((x,0) for x in liste)) #x les clés et 0 valeurs print(dict((x,i) for i,x in enumerate(liste))) #i les indices (à partir de 0) et x les valeurs print(dict((x,i) for x,i in enumerate(liste))) print(set(liste)) #met les valeurs de la liste entre accolades #pourquoi on peut pas le mettre dans un objet? print(set([100] + liste)) #rajoute 100 dans le set de la liste précédent ``` ```python= chaine = 'hello world' print(chaine) print(tuple(chaine)) #ça nous crée un tuple où chaque valeur est un str d'une lettre de la chaine print(str(chaine)) print(dict((x,0) for x in chaine)) #x les clés et 0 valeurs, quand une valeur dans la chaine apparait plus d'une fois, le dict va retourner qu'une fois la valeur print(dict((x,i) for i,x in enumerate(chaine))) #i les indices (à partir de 0) et x les valeurs, si une valeur apparait plusieurs fois, dict la retourne qu'une fois et son indice sera l'indice de l'apparition de la dernière valeur print(set(chaine)) #met les valeurs de la liste entre accolades, et met qu'une fois une valeur si elle apparait plusieurs fois parce que il ne peut pas avoir de répétition dans un set print(set([(100)] + chaine)) #on ne peut pas concaténer une liste et une chaine ``` #3 ```python= lst = [5,7,67,90,3] lst.append("c") lst.append(10) lst.append(lst) lst.append((5,6)) lst.append({3:56, 89:0}) print(lst) #la fonction append ajoute à une liste l'élement entre parenthèses, il peut être de tout type #print(len(lst)) #renvoie la taille de la liste L = [7,0,10] lst = [98, 100, 5] lst.extend(L) #concatène les 2 listes et la met dans lst print(lst) lst.insert(4, "coucou") #fonction qui ajoute l'élement "coucou" à l'indice 4 dans la liste lst lst.remove(100) #supprime l'élement 100 de la liste print(lst) lst.pop(3) #supprime l'élement à l'indice 3 de la liste, ici "coucou" print(lst.index(5)) #renvoie l'indice de la valeur 5, ne modifie pas la liste print(lst.count(98)) #renvoie le nombre de fois que l'élement 98 apparait lst.sort() #tri la liste et modifie la liste print(sorted(L)) #tri la liste mais ne la modifie pas ! print(L) lst.reverse() #met à l'envers la liste et la modifie ``` Pour les dictionnaires : ```python= dico = {"Larousse" : 78, "Robert" : 67, "CNRTL" : 23} #pour les clés for clé in dico.keys(): print(clé) print(dico.keys()) #dict_keys(['Larousse', 'Robert', 'CNRTL']) #pour les valeurs for val in dico.values(): print(val) print(dico.values()) #dict_values([78, 67, 23]) #pour les clés et valeurs for clé, valeur in dico.items(): print(clé, valeur) print(dico.get("Larousse")) #renvoie la valeur associé à la clé "Larousse" dico.pop("Larousse") #supprime la clé et donc la valeur associer, modifie le dico ``` Pour les chaines de caractère ```python= #pour les chaines chaine = "on fait du python" chaine2 = "1 2 3 bonjour" print(chaine.capitalize()) #met une majuscule à la première lettre, ne modifie pas la chaine print(chaine2.capitalize()) #ne met pas le b en majuscule print(chaine.upper()) #met toute la chaine en majuscule mais ne modif pas print(chaine2.upper()) print(chaine.count("o")) #compte le nombre de "o" dans la chaine #avec juste des guillemets ça compte le nombre de caractères print(chaine.split()) #fait une liste des mots séparé par un espace ``` TP2 exo1 ```python= #1 def position(elt, liste, depart): """[summary] parameters ---------- elt : str, int, float, list, tuples, dict élement entré par l'utilisateur cherché dans la liste liste : list liste d'élements depart : int position de départ, l'élement n'est cherché qu'à partir de cet indice Returns ------- int L'indice de l'élement recherché dans la liste, ou -1 si l'occurence n'existe pas Examples -------- >>> position(6, [7,8,6,0,6], 1) 2 >>> position(6, [7,8,6,0,6], 3) 4 >>> position("coucou", ["hello", "bonjour", "hola"], 0) -1 """ for i in range(depart,len(liste)) : if elt == liste[i]: return(i) return(-1) #print(position(6, [7,8,6,0,6], 1)) #print(position(6, [7,8,6,0,6], 3)) #print(position("coucou", ["hello", "bonjour", "hola"], 0)) #2 def sous_liste(petite_liste, grande_liste): """[summary] parameters ---------- petite_liste : list liste d'éléments grande_liste : list liste d'éléments Returns ------- booléen Indique si les éléments de la petite_liste apparaissent tous et dans le même ordre dans grande_liste Examples -------- >>> sous_liste([2,4,10], [1,2,4,5,6,8,10,12]) TRUE >>> sous_liste([2,4,10], [1,2,5,6,8,10,12]) FALSE >>> sous_liste([2,4,10], [1,4,2,5,6,8,10,12]) FALSE """ lst = list() for element in petite_liste : lst.append(position(element,grande_liste, 0)) return(sorted(lst) == lst) #print(sous_liste([2,4,10], [1,2,4,5,6,8,10,12])) #print(sous_liste([2,4,10], [1,2,5,6,8,10,12])) #print(sous_liste([2,4,10], [1,4,2,5,6,8,10,12])) #3 #ça fonctionnerait avec un tuple et les str ``` exo2 ```python = def transformer(fonction, liste): """[summary] parameters ---------- fonction : function liste : list liste d'éléments Returns ------- list liste de départ à laquelle on a appliqué la fonction à chaque élément Examples -------- >>> transformer(sorted, [5,1,9]) [1,5,9] >>> transformer(len, [5,1,9]) [9,1,5] """ return(fonction(liste)) print(transformer(sorted, [5,1,9])) print(transformer(len, [5,1,9])) ```