TD⚓︎
Exercice 1
foo = (1, 2, 3, 4)
- Que retournera
foo[0]
,foo[4]
? - Quel sera l'effet de
foo[1] = 5
? - Quel sera l'effet de
a, b, c, d = foo
?
-
foo[0]
retourne1
.foo[4]
retourne une erreur (carfoo
est de taille 4 donc l'indice max est 3). -
foo[1] = 5
retourne une erreur car un tuple est non-mutable (on ne peut pas modifier un élément du tuple) - cela affectera 1 à
a
, 2 àb
, 3 àc
et 4 àd
.
Exercice 2
Écrire une fonction somme_produit(a, b)
recevant deux valeurs (entières), et renvoyant leur somme et leur produit.
def somme_produit(a, b):
return a + b, a * b
Exercice 3
Écrire une fonction liste_de_points(n)
demandant à l'utilisateur les coordonnées de n
points et les stockant dans une liste. Chaque point sera modélisé par un tuple (exemple (1,-5)
)
def liste_de_points(n):
lst = []
for i in range(n):
x = int(input("Abscisse : "))
y = int(input("Ordonnée : "))
lst.append((x, y)) # Attention aux doubles parenthèses
return lst
Exercice 4
def foo(bar):
'''
Parameters:
bar (str): une chaine de caractère
'''
for var in bar:
if var in "aeiouy":
return True
return False
Que fait cette fonction ?
Retourne True
si il y a une voyelle dans le paramètre bar
Exercice 5
def foo(bar):
'''
Parameters:
bar (list): une liste de listes
'''
for ligne in bar:
for elem in ligne:
if elem == 0:
return True
return False
Que fait cette fonction ?
Retourne True
si la liste de listes bar
contient au moins un 0
Exercice 6
- Ecrire une fonction
nbre_de_a(chaine)
prenant en paramètre une chaine de caractèreschaine
et retournant le nombre de a. - Ecrire une fonction
nbre_de_carac(chaine,carac)
prenant en paramètre une chaine de caractèreschaine
et une chaine d'un unique caractèrecarac
et retournant le nombre de fois quecarac
apparait dans le chaine. - Ecrire une fonction
nbre_de_voyelles(chaine)
prenant en paramètre une chaine de caractèreschaine
retournant le nombre de voyelles dans le chaine.
def nbre_de_a(chaine): cpt = 0 for carac in chaine: if carac == "a": cpt += 1 return cpt
def nbre_de_carac(chaine, carac): cpt = 0 for lettre in chaine: if lettre == carac: cpt += 1 return cpt
def nbre_de_voyelles(chaine): cpt = 0 for lettre in chaine: if lettre in "aeiouy": cpt += 1 return cpt
Exercice 7
Décrire les range
suivant sur le modèle ci-dessous:
range(10) --> 0, 1, 2...., 9
range(8)
range(-5)
range(3, 8)
range(5, 4)
range(3, 10, 2)
range(3, 10, 20)
Exercice 8
Que retournent les phrases suivantes:
[int(x) for x in ('1','29','3')]
[int(x) for x in '2021']
[int(x) for x in str(1998)]
[c for c in 'bonjour' if c not in "aeiouy"]
[i for i in range(10, 5, -1)]
[i for i in range(10, 5, -3)]
[1, 29, 3]
[2, 0, 2, 1]
[1, 9, 9, 8]
['b', 'n', j', 'r']
[10, 9, 8, 7, 6]
[10, 7]
Exercice 9
Que retournent les instructions suivantes:
[ 1 for i in range(5)]
[ i for i in range(5)]
[ i + 1 for i in range(5)]
[2 * i for i in range(5)]
[i ** 2 for i in range(10) if i%2 == 0]
[2 ** i for i in range(5)]
[1, 1, 1, 1, 1]
[0, 1, 2, 3, 4]
[1, 2, 3, 4, 5]
[0, 2, 4, 6, 8]
[0, 4, 16, 36, 64]
[1, 2, 4, 8, 16]
Exercice 10
Créer les listes suivantes:
[1, 2, 3, 4, ..., 98, 99]
[1, 3, 5, ..., 97, 99]
[0, 3, 6, ..., 96, 99]
[1, 0.5, 0.33333333, 0.25, 0.2, ...., 0.01 ]
[1, -1, 1, -1, 1, ..., 1, -1]
(de longueur 100)
[i for i in range(1, 100)]
[i for i in range(1, 100, 2)]
[i for i in range(0, 100, 3)]
[1 / i for i in range(1, 101)]
[(-1) ** i for i in range(100)]
Exercice 11
foo = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]]
- Que retournera
foo[3]
?foo[3][0]
?foo[0][3]
? - Comment sera la liste
foo
après l'éxécution de la lignefoo[2][1] = 5
?
-
foo[3]
retourne[13, 14, 15, 16]
.foo[3][0]
retourne13
.foo[0][3]
retourne4
. -
[[1, 2, 3, 4],[5, 6, 7, 8],[9, 5, 11, 12],[13, 14, 15, 16]]
Exercice 12
- Créer une liste de listes
grille
correspondant à la grille suivante:
On représentera les cercles par le chiffre 0
, les croix par le chiffre 1
et les cases vides par None
.
- Quelle instruction écrire pour modifier le premier cercle en une croix ?
- Ecrire une fonction
efface(grille)
prenant en paramètre une grille carrée de taille 5 et la vidant.
grille = [[1, 0, None, None, 0], [None, None, 1, 1, None], [0, None, 1, 1, 1], [None, 0, None, None, 0], [0, 0, None, None, 1]]
grille[0][1] = 1
def efface(grille): for i in range(len(grille)): for j in range(len(grille[i])): grille[i][j] = None
Exercice 13
Ecrire une fonction somme(mat1, mat2)
prenant en paramètre deux listes de listes de même taille et retournant une liste de liste de même taille ou chaque valeur est somme des valeurs de mat1
et mat2
.
Voici une doctest correspondante.
>>> somme([[0,1],[1,0]],[[1,0],[0,1]])
[[1,1],[1,1]]
>>> somme([[0,1,2],[3,4,5]],[[1,1,1],[1,1,1]])
[[1,2,3],[4,5,6]]
def somme(mat1, mat2):
lst = [[None] * len(mat1[i]) for i in range(len(mat1))]
for i in range(len(mat1)):
for j in range(len(mat1[i])):
lst[i][j] = mat1[i][j] + mat2[i][j]
return lst
OU
def somme(mat1, mat2):
lst = []
for i in range(len(mat1)):
souslst = []
for j in range(len(mat1[i])):
souslst.append(mat1[i][j] + mat2[i][j])
lst.append(souslst)
return lst