---
# System prepended metadata

title: Python TP 1

---

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

