Telechargé par Jean Louis Kacou

vendredi29

publicité
vendredi29
May 29, 2020
[ ]: PY306-IC-Python Avancé - S3-2020
[1]: import os
print(os.sys.version)
3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0]
Des questions ? des choses que vous voulez qu’on voit ensemble en particulier ? - les modules.
comment Faire un module, un packet - Objectif: pour la fin de la semaine prochaine: savoir publier
un petit module en ligne afin qu’il soit installable
0.0.1
Ecrire des fonctions (pour se familiariser avec jupyter)
Exercice. Ecrire une fonction ‘compte_caracteres’ qui compte le nombre de caractères de l’argument
[3]: def compte_caracters(nom):
"""
Compte le nombre de caractères de l'argument
exemple: compte_caracters("Malik Koné") -> 10
"""
resultat = len(nom)
return resultat
[4]: compte_caracters("Malik Koné")
[4]: 10
Avec une valeur par défaut
[6]: def compte_caracters(nom='Une valeur par défaut au hasar'):
resultat = len(nom)
return resultat
compte_caracters()
# affiche le nombre de caractères de ma valeur par défaut
[6]: 30
1
[ ]: Controler le type des arguments
est ce que notre argument est une chaine de caractère
[1]: def compte_caracters(nom='Une valeur par défaut au hasar'):
# comment vérifier que la variable nom est une chaine de caractères ?
if isinstance(nom, str):
# isinstance vérifie le type de la variable nom
return len(nom)
else:
# on lève une exception
raise Exception(f"Notre variable 'nom' {nom} n'est pas de type 'str'")
print(f"Un appel corret est :{compte_caracters('Ernesto Djedje')}")
print(f"Un appel avec argument de mauvais type {compte_caracters(1234)}")
Un appel corret est :14
␣
---------------------------------------------------------------------------
,→
Exception
Traceback (most recent call␣
last)
,→
<ipython-input-1-e0d61819aa5a> in <module>
9 print(f"Un appel corret est :{compte_caracters('Ernesto Djedje')}")
10
---> 11 print(f"Un appel avec argument de mauvais type␣
,→{compte_caracters(1234)}")
<ipython-input-1-e0d61819aa5a> in compte_caracters(nom)
5
else:
6
# on lève une exception
----> 7
raise Exception(f"Notre variable 'nom' {nom} n'est pas de␣
,→type 'str'")
8
9 print(f"Un appel corret est :{compte_caracters('Ernesto Djedje')}")
Exception: Notre variable 'nom' 1234 n'est pas de type 'str'
[1]: # Un autre erreur
print(123/0)
2
␣
,→--------------------------------------------------------------------------ZeroDivisionError
Traceback (most recent call␣
last)
,→
<ipython-input-1-9ad347c04dc8> in <module>
1 # Un autre erreur
----> 2 print(123/0)
ZeroDivisionError: division by zero
[12]: une_liste = 'Il a plu hier soir.'.split(' ')
,→caractère selon les espaces
print(une_liste, len(une_liste))
une_liste[3]
une_liste[9]
# split découpe la chaine de␣
# renvois le 4ème element
# créer une erreur car il n'y a pas de 10 ème élément
['Il', 'a', 'plu', 'hier', 'soir.'] 5
␣
---------------------------------------------------------------------------
,→
IndexError
Traceback (most recent call␣
last)
,→
<ipython-input-12-2df87c342b9e> in <module>
3
4 une_liste[3] # renvois le 4ème element
----> 5 une_liste[9] # créer une erreur car il n'y a pas de 10 ème élément
IndexError: list index out of range
[4]: une_liste_sans_espace = 'Il.a.plu.hier.soir.'.split(' ')
print(une_liste_sans_espace, len(une_liste_sans_espace))
['Il.a.plu.hier.soir.'] 1
[6]: une_liste_sans_espace = 'Il.a.plu-hier.soir.'.split('.')
print(une_liste_sans_espace, len(une_liste_sans_espace))
['Il', 'a', 'plu-hier', 'soir', ''] 5
3
[7]: une_liste_sans_espace = 'Il.a.plu-hier.soir.'.split('-')
print(une_liste_sans_espace, len(une_liste_sans_espace))
['Il.a.plu', 'hier.soir.'] 2
[3]: # utiliser une boucle while pour appeler fois notre fonction.
une_liste_de_nom = ['zglibiti', 'coupé décalé', 'zaïco']
print(f"Notre variable une_liste_de_nom est de type {type(une_liste_de_nom)}")
# compte_caracters(une_liste_de_nom)
-> lève une exception
# on appelle compte_caracters avec les éléments de la liste
compteur = 0
while compteur < len(une_liste_de_nom):
print(f"compteur={compteur}")
# on sauve un élément de la liste
un_element = une_liste_de_nom[compteur]
# et on appel la fonction avec
resultat = compte_caracters(un_element)
print(f"Le nom {un_element} a {resultat} caractères.
# ne pas oublier la condition d'arrête
compteur += 1
compteur {compteur}")
Notre variable une_liste_de_nom est de type <class 'list'>
compteur=0
Le nom zglibiti a 8 caractères. compteur 0
compteur=1
Le nom coupé décalé a 12 caractères. compteur 1
compteur=2
Le nom zaïco a 5 caractères. compteur 2
[7]: # on fait la même chose mais en une ligne
# les listes compréhensions
[f"~{elt}~ à {compte_caracters(elt)} caractères." for elt in une_liste_de_nom]
[7]: ['~zglibiti~ à 8 caractères.',
'~coupé décalé~ à 12 caractères.',
'~zaïco~ à 5 caractères.']
[9]: # les dictionnaires compréhension
un_dictionnaire = {elt: compte_caracters(elt) for elt in une_liste_de_nom}
print(un_dictionnaire)
{'zglibiti': 8, 'coupé décalé': 12, 'zaïco': 5}
4
[15]: # Exercice: ecrire une fonction
def lit_mots(une_phrase):
"""
Découpe la phrase en mots
et affiche un dictionnaire avec le mot comme clef
et le nombre de caractère comme valeur"""
# code
ma_liste = une_phrase.split(' ')
mon_dico = {elt: compte_caracters(elt) for elt in ma_liste}
return mon_dico
lit_mots('Il a plu hier nuit.')
,→'hier': 4, 'nuit.':5}
# doit renvoyer -> {'Il': 2, 'a': 1, 'plu': 3,␣
[15]: {'Il': 2, 'a': 1, 'plu': 3, 'hier': 4, 'nuit.': 5}
[ ]:
5
Téléchargement