# 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]))
```