Si certains exercices n'ont pas pu être terminés dans le cadre de cette séance, il est fortement conseillé de les terminer par vous-même chez vous ou en salle libre service.
N'oubliez pas de sauvegarder vos fonctions dans un fichier appelé info113_tp2.py
: une fois que l'interpréteur est lancé, il faut utiliser la commande N
ew File
du menu F
ile
Le but de ce TP est d'approfondir votre maitrise des :
et de commencer à découvrir les boucles « for
».
Écrivez la fonction est_OK
qui teste si une chaine est OK
, mais sans prendre en compte les majuscules :
>>> est_OK("OK") True >>> est_OK("oK") True >>> est_OK("ok") True >>> est_OK("KO") False >>> est_OK("") False >>> est_OK("okapi") False
Écrivez la fonction est_Python
qui teste si une chaine est Python
, mais sans prendre en compte les majuscules :
>>> est_Python("python") True >>> est_Python("PyThOn") True >>> est_Python("P") False >>> est_Python("python-3.4") False
Programmez, en utilisant un if ...: elif: ... else: ...
la fonction est_bissextile
du TD2.
Rappel : une année est bissextile si
Testez (et mettez les valeurs correspondantes dans un commentaire) votre fonction en choisissant des valeurs qui utilisent tous les cas possibles.
Écrivez une fonction nb_jours
qui prend deux arguments :
et qui renvoie le nombre de jours dans le mois correspondant.
Par exemple
>>> nb_jours(2015,9) 30 >>> nb_jours(2000,2) 28
Écrivez une fonction qui renvoie le nombre de points d'une carte à la belote.
Votre fonction devra prendre 3 arguments
"pique"
,"coeur"
,"trefle"
ou "carreau"
;
1
pour l'as, 11
pour le valet, 12
pour la dame et 13
pour le roi ;
Rappel : le nombre de points rapportés par les cartes à la belote sont
carte | atout | standard |
---|---|---|
as (1) | 11 | 11 |
7 | 0 | 0 |
8 | 0 | 0 |
9 | 14 | 0 |
10 | 10 | 10 |
valet (11) | 20 | 2 |
dame (12) | 3 | 3 |
roi (13) | 4 | 4 |
Fournissez (en commentaire) l'ensemble des tests effectués.
Une boucle for
en Python s'écrit :
for i in range(debut, stop): ... ...
où :
i
est une variable,
debut
est une expression de type nombre entier : c'est la première valeur de i
,
stop
est une expression de type nombre entier : c'est à partir de cette valeur que la boucle s'arrête,
Par exemple, pour
for i in range(4, 10): ...
la variable i
prendra successivement les valeurs 4
, 5
, 6
, 7
, 8
et 9
.
L'instruction print
de Python permet d'afficher des informations à l'écran. Par exemple : print(x)
affichera la valeur de la variable x
, et print("la variable x vaut", x)
affichera
la variable x vaut 17
(à condition bien sûr que la variable x
ait effectivement la valeur 17
).
Tapez les lignes suivantes dans l'interpréteur :
>>> for i in range(1, 10): print("la variable de boucle 'i' vaut", i) ???
Remarque : comme l'instruction de boucle tient sur plusieurs lignes, l'interpréteur attend de voir une ligne blanche avant d'évaluer le bloc de code.
Recommencez en changeant le i
du print par:
print(..., 2i)
print(..., 3i)
print(..., i*i)
print(..., 10-i)
et essayez de deviner à chaque fois ce que l'interpréteur affichera.
Écrivez, en utilisant une boucle for, une fonction compte_triangle
avec un paramètre entier n
qui compte le nombre d'étoiles dans un triangle de n
lignes comme celui ci :
* ** *** **** *****
Ce triangle contient 5 lignes et 15 étoiles au total. On aura donc
>>> compte_triangle(5) 15
Remarque : comme la ligne i
contient exactement i
étoiles, il s'agit en fait de la fonction qui calcule la somme des n
premiers nombres entiers. Ces nombres sont appelés nombres triangulaires !
Ajoutez une ligne dans la fonction compte_triangle
de la question précédente pour afficher les informations suivantes :
>>> compte_triangle(7) ligne 1: il y a déjà eu 1 étoiles ligne 2: il y a déjà eu 3 étoiles ligne 3: il y a déjà eu 6 étoiles ligne 4: il y a déjà eu 10 étoiles ligne 5: il y a déjà eu 15 étoiles ligne 6: il y a déjà eu 21 étoiles ligne 7: il y a déjà eu 28 étoiles 28
Dans le calcul précédent, il faut bien distinguer les lignes contenant les informations affichées par le print
et le résultat de la fonction, affiché par l'interpréteur (ici, le nombre 28
). Les informations seront toujours affichées, même lorsqu'on utilise une variable pour stocker le résultat de la fonction.
Évaluez les expressions suivantes en essayant de deviner à l'avance ce qui se passera.
>>> x = compte_triangle(5) ??? >>> y = compte_triangle(6) ??? >>> x ??? >>> y ??? >>> compte_triangle(3) + compte_triangle(4) ???
Programmez, une fonction somme7
à un argument entier n
qui calcule la somme des n
premiers multiples de 7.
Attention, vous ne devez pas utiliser le pas (troisième argument du range
.)
Par exemple :
>>> somme7(4) 70 >>> somme7(5) 105
car 7 + 14 + 21 + 28 = 70 et 7 + 14 + 21 + 28 + 35 = 105.
Écrivez une fonction compte_espaces
avec un argument s
de type chaine de caractères qui renvoie le nombre de caractères « espace » contenus dans la chaine s
. Par exemple :
>>> compte_espaces("Salut, je m'appelle Bob !")
4
Ajouter une ligne pour afficher le nombre d'espaces à chaque fois que la fonction en trouve un :
>>> compte_espaces("Salut, je m'appelle Bob !")
le caractère 6 est un espace : il y en a 1
le caractère 9 est un espace : il y en a 2
le caractère 19 est un espace : il y en a 3
le caractère 23 est un espace : il y en a 4
4
Lorsque cela fonctionne, commentez la ligne correspondante pour supprimer l'affichage des informations.
Écrivez un fonction compte_car_doubles
à un argument s
de type chaine de caractères qui compte le nombre de symboles doublés dans s
. Par exemple,
>>> compte_car_doubles("ce mouton carnassier a une grosse tete")
???
car il y a deux lettres doublées : ce mouton carna
ss
ier a une gro
ss
e tete
.
Essayez de deviner le résultat de votre fonction sur la chaine "Chut... Le bébé rhinocéros fait la sieste." et vérifiez le résultat.