From 3dc01f7f9848cbcee468121479eaf8ac43ac60ca Mon Sep 17 00:00:00 2001
From: Romain Vuillemot <romain.vuillemot@gmail.com>
Date: Tue, 2 Feb 2021 07:54:50 +0100
Subject: [PATCH] =?UTF-8?q?Nouvelles=20mises=20=C3=A0=20jour?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 TD01/code/.gitkeep                   |  0
 TD01/code/08-conversion_exercices.py | 74 ----------------------------
 TD01/code/comprehension.py           | 37 ++++++++++++++
 TD01/code/dict.py                    | 62 +++++++++++++++++++++++
 TD01/code/division.py                | 15 ++++++
 TD01/code/set-exemples.py            | 59 ++++++++++++++++++++++
 6 files changed, 173 insertions(+), 74 deletions(-)
 delete mode 100644 TD01/code/.gitkeep
 delete mode 100644 TD01/code/08-conversion_exercices.py
 create mode 100644 TD01/code/comprehension.py
 create mode 100644 TD01/code/dict.py
 create mode 100644 TD01/code/division.py
 create mode 100644 TD01/code/set-exemples.py

diff --git a/TD01/code/.gitkeep b/TD01/code/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/TD01/code/08-conversion_exercices.py b/TD01/code/08-conversion_exercices.py
deleted file mode 100644
index d8ec3d3..0000000
--- a/TD01/code/08-conversion_exercices.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# 8 Conversion de types
-
-# Exercice
-
-# Écrire la fonction convertir(S) qui convertit son paramètre (un string) 
-# en un entier. Pour que la conversion soit possible, le paramètre S doit 
-# être être composé de chiffres éventuellement précédé d'un signe.
-
-def convertir(S) : # S est une liste de caractères
-
-    # Il y a un signe au début ou pas ?
-    signe= +1                                         # Initialisation du signe
-    if S[0:1] in '+-':
-        if S[0:1]=='-' : signe=-1
-        S = S[1:]                                        # On enlève le signe
-
-    if S.isdigit(): return int(S) * signe             # On peut aussi écrire : str.isdigit(xs) !
-    else: return (S + " n'est pas un nombre")
-
-S=input('Donner  une chaine de chiffres: ')
-print(convertir(S))
-
-# Donner  une chaine de chiffres: -124
-# -124
-# Donner  une chaine de chiffres: 12a
-
-#  Une version qui n'utilise ni int() ni isdigit()
-def convertir02(S1) :       # S est une liste de caractères
-    assert(S1 != '' and S1 != None)
-    signe= +1                                       # Initialisation du signe
-    val = 0; S=S1
-    if S[0] in '+-':
-        if S[0:1]=='-' : signe=-1
-        S = S[1:]
-    for car in S :
-        if car in "0123456789": val = 10*val+ord(car)-ord('0')
-        else : return (S1 + " n'est pas un nombre")
-    return val * signe             # On peut aussi écrire : str.isdigit(xs) !
-
-S=input('Donner  une chaine de chiffres : ')
-print(convertir02(S))
-
-# Exercice
-# Écrire la fonction {\tt convertir2r(S)} qui convertit son paramètre (un 
-# string) en un réel (loat). Pour que la conversion soit possible, le
-# paramètre {\it S} doit être être éventuellement précédé d'un signe, puis 
-# composé de chiffres suivis d'un '.' puis une série de chiffres. La
-# présence d'un '.' est obligatoire, et qui est forcément suivi d'au moins
-# un chiffre.
-
-def convertir2r(S) :                       # S est une liste de caractères
-    assert('.' in S)                        # '.' obligatoire
-    lst_2_parties=S.split('.')              # une liste des 2 parties
-    val_int=0
-    if lst_2_parties[0] != '' : val_int=convertir02(lst_2_parties[0])
-        
-    # vérifier que la partie décimale ne comporte  pas un second signe !
-    assert(lst_2_parties[1][0] not in '+-')
-
-    val_reel=0
-    if lst_2_parties[1] != '' : val_reel=convertir02(lst_2_parties[1])
-
-    # La partie décimale s'ajoute ou se retrache suivant le signe de val_int'
-    if val_int >= 0 :
-        return val_int + val_reel/(10**len(lst_2_parties[1]))
-    else : return val_int - val_reel/(10**len(lst_2_parties[1]))
-
-
-S=input('Donner  une chaine de chiffres (un réel) : ')
-print(convertir2r(S))
-convertir2r('12.34')
-convertir2r('0.12')
-convertir2r('13.0')
-convertir2r('-3.001')
\ No newline at end of file
diff --git a/TD01/code/comprehension.py b/TD01/code/comprehension.py
new file mode 100644
index 0000000..d5ae9d7
--- /dev/null
+++ b/TD01/code/comprehension.py
@@ -0,0 +1,37 @@
+S = [x**2 for x in range(10)]
+V = [2**i for i in range(13)]
+M = [x for x in S if x % 2 == 0]
+
+print(S); print(V); print(M)
+# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
+# [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]
+# [0, 4, 16, 36, 64]
+
+
+S = {x**2 for x in range(10)}           # {} au lieu de [] : on veut un ensemble
+print(S)
+# {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
+type(S)
+#set
+
+V = (2**i for i in range(13))
+print(V)
+# <generator object <genexpr> at 0x7f7bb55edc18>
+
+type(V)
+# generator
+
+# On peut mieux comprendre les listes en compréhension à travers leurs fonctions équivalentes
+S = []
+for i in range(10):
+    S.append(i*2)
+
+# Et 
+S = [i*2 for i in range(10)]
+
+S
+# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
+
+[c for c in "foobar"]
+
+# Donne ['f', 'o', 'o', 'b', 'a', 'r']
\ No newline at end of file
diff --git a/TD01/code/dict.py b/TD01/code/dict.py
new file mode 100644
index 0000000..8446bdf
--- /dev/null
+++ b/TD01/code/dict.py
@@ -0,0 +1,62 @@
+# Trois fonctions importantes sur les dicts  : keys(), values() et items()
+
+a = dict(one=1, two=2, three=3)
+b = {'one': 1, 'two': 2, 'three': 3}
+c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
+d = dict([('two', 2), ('one', 1), ('three', 3)])
+e = dict({'three': 3, 'one': 1, 'two': 2})
+a == b == c == d == e
+# True
+
+capitals = {'Iowa':'DesMoines','Wisconsin':'Madison'}
+print(capitals['Iowa'])
+# DesMoines
+
+capitals['Utah']='SaltLakeCity'
+print(capitals)
+# {'Iowa': 'DesMoines', 'Utah': 'SaltLakeCity', 'Wisconsin': 'Madison'}
+
+capitals['California']='Sacramento'
+print(len(capitals))
+# 4
+
+for k in capitals:
+    print(capitals[k]," is the capital of ", k)
+# DesMoines  is the capital of  Iowa
+# SaltLakeCity  is the capital of  Utah
+# Madison  is the capital of  Wisconsin
+# Sacramento  is the capital of  California
+
+phone_ext={'david':1410, 'brad':1137}
+phone_ext
+# {'brad': 1137, 'david': 1410}
+
+phone_ext.keys()                    # Renvoie les clés de phone_ext
+# dict_keys(['brad', 'david'])
+
+list(phone_ext.keys())
+# ['brad', 'david']
+
+"brad" in phone_ext
+# True
+
+1137 in phone_ext
+# False                             # 1137 n'est pas une clé
+
+phone_ext.values()                  # Renvoie les valeurs de phone_ext
+# dict_values([1137, 1410])
+
+list(phone_ext.values())
+# [1137, 1410]
+
+phone_ext.items()
+# dict_items([('brad', 1137), ('david',1410)])
+
+phone_ext.get("kent")
+# Rien !    La clé n'y est pas.
+
+phone_ext.get("kent","NO ENTRY")    # Si on veut récupérer la réponse en cas d'absence de la clé.
+'NO ENTRY'
+
+del phone_ext["david"]
+phone_ext
\ No newline at end of file
diff --git a/TD01/code/division.py b/TD01/code/division.py
new file mode 100644
index 0000000..0ef7cb0
--- /dev/null
+++ b/TD01/code/division.py
@@ -0,0 +1,15 @@
+def division(x, y):
+    return x / y
+
+if __name__=="__main__": 
+    try:
+        r = division(2, 1)
+        # division(2, 0)
+        # division("2", "1")
+    except ZeroDivisionError:
+        print("Division par zero !")
+    else:
+        print("Le résultat est", r)
+    finally:
+        print("Clause finale")
+
diff --git a/TD01/code/set-exemples.py b/TD01/code/set-exemples.py
new file mode 100644
index 0000000..68ed6cd
--- /dev/null
+++ b/TD01/code/set-exemples.py
@@ -0,0 +1,59 @@
+{3,6,"cat",4.5,False}
+
+# {False, 4.5, 3, 6, 'cat'}     # L'ensemble est ordonné
+my_set = {3,6,"cat",4.5,False}
+my_set
+
+#{False, 3, 4.5, 6, 'cat'}
+
+len(my_set)
+# 5
+
+False in my_set
+# True
+
+"dog" in my_set
+#False
+
+your_set =  {99,3,100}
+my_set.union(your_set)
+# {False, 3, 4.5, 6, 99, 'cat', 100}
+
+my_set | your_set
+# {False, 3, 4.5, 6, 99, 'cat', 100}
+
+my_set.intersection(your_set)
+# {3}
+
+my_set & your_set
+# {3}
+
+my_set.difference(your_set)
+# {False, 4.5, 6, 'cat'}
+
+my_set - your_set
+# {False, 4.5, 6, 'cat'}
+
+{3,100}.issubset(your_set)
+# True
+
+{3,100} <= your_set
+# True
+
+my_set.add("house")
+my_set
+# {False, 3, 4.5, 6, 'house', 'cat'}
+
+my_set.remove(4.5)
+my_set
+# {False, 3, 6, 'house', 'cat'}
+
+my_set.pop()
+# False
+
+my_set
+# {3, 6, 'house', 'cat'}
+
+my_set.clear()
+my_set
+set()               # Ensemble vide
\ No newline at end of file
-- 
GitLab