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