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 n de la semaine prochaine: savoir publier
un petit module en ligne an 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(' ')# split découpe la chaine de
,caractère selon les espaces
print(une_liste, len(une_liste))
une_liste[3]# renvois le 4ème element
une_liste[9]# 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. compteur {compteur}")
# ne pas oublier la condition d'arrête
compteur += 1
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.')# doit renvoyer -> {'Il': 2, 'a': 1, 'plu': 3,
,'hier': 4, 'nuit.':5}
[15]: {'Il': 2, 'a': 1, 'plu': 3, 'hier': 4, 'nuit.': 5}
[ ]:
5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !